我打破了我的 Mysql View 查询。我如何解决它?

Posted

技术标签:

【中文标题】我打破了我的 Mysql View 查询。我如何解决它?【英文标题】:I broke my Mysql View query. How do I fix it? 【发布时间】:2011-01-30 03:33:04 【问题描述】:

几个月前,我创建了一个提供上个月交易的 VIEW。我在其他查询中使用该视图。问题是,我更改了 VIEW 中引用的表的一些表名,并在此过程中破坏了 VIEW 查询。现在我的其他查询不再执行。

有什么方法可以查看 VIEW 语句是什么并对其进行编辑以反映新的表名?我正在使用 phpmyadmin,但是每次我尝试转到视图表时,它都会给我一个错误,说它是无效的,但它不会告诉我它是什么......

【问题讨论】:

这里的东西非常相似:***.com/questions/2279240/… 【参考方案1】:

如果您知道视图的名称,您可以运行它,它会向您显示创建视图的查询。如果 phpMyAdmin 不允许您运行它,那么您可能必须在命令行中执行它。

SHOW CREATE VIEW view_name

你还应该这样说:

SQL SECURITY DEFINER VIEW `myViewName` AS

紧接着您会找到创建此视图的查询。将其复制并粘贴到文本编辑器中,您可以对其进行更改,使其与您的新表名一起使用。

将其作为普通查询运行以确保其正常工作,然后当您准备用损坏的原始查询替换它时,您可以运行此查询(注意这会删除原始视图!):

DROP VIEW IF EXISTS myViewName;

CREATE VIEW myViewName AS ...(your new query here)...

希望有帮助!

参考资料:

    http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html

【讨论】:

谢谢。这给了我以下信息:CREATE ALGORITHM=UNDEFINED DEFINER=root@`localho... 不知道如何解释。 只需将这部分从algorithm 跳过到security definerCREATE VIEW view_name AS SELECT 是您所需要的,尤其是在 SELECT 部分之后。 我添加了更多细节,向您展示如何删除原始视图,使用新查询重新创建它。

以上是关于我打破了我的 Mysql View 查询。我如何解决它?的主要内容,如果未能解决你的问题,请参考以下文章

我在这个模型中打破了我的聚合边界吗?

tailwindcss 在我的 Angular 项目中打破了我的一些风格

如何在 MySQL 中打破类似于 MS SQL Server 的列名?

ajax .load() 打破了我的滑块

react-router-redux 打破了我的应用程序状态

如何打破 webpack 钩子中的循环