我使用的是开源CMS pimcore(http://www.pimcore.org),它运行在MySQL后端。
它使用相当复杂的视图来表示对象,并且当视图引用的另一个表中的列被重命名时,其中一个视图在某个阶段已被破坏。每当我尝试通过SQL命令与表进行交互时,我都会收到错误:
查看'barriste_website.object_6'引用无效表格或 列或功能或定义者/调查者缺乏使用权 它们
我想简单地更新视图以引用重命名的列,但是在开始讨论之前我需要知道视图的当前结构 - 一旦它被破坏,我究竟如何检索视图的结构?我试过了
SHOW CREATE VIEW object_6
但我收到同样的错误。
提前感谢您的帮助!
答案 0 :(得分:26)
<强> MySQL的:强>
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
参考:The INFORMATION_SCHEMA VIEWS Table
SQL Server:
USE databasename
GO
EXEC sp_helptext viewName
或者像这样的查询:
SELECT TABLE_NAME as ViewName,
VIEW_DEFINITION as ViewDefinition
FROM INFORMATION_SCHEMA.Views
您可以在其中添加WHERE
以仅检索一个视图
答案 1 :(得分:6)
只需使用“drop view object_6”删除视图,然后进入pimcore后端并再次保存该类。然后自动重新生成视图。
答案 2 :(得分:0)
在我的情况下,罪魁祸首是使用ORDER BY
和 alias 引起问题。我从以下位置改变了看法:
CREATE VIEW v_storename_totalnamelength AS
SELECT
(char_length(`a`.`ExtractedLongName`) + char_length(`a`.`ExtractedLongName`)) AS `TotalNameLength`
FROM
`promoter`.`v_storename_extracted` `a`
ORDER BY
`TotalNameLength` DESC
;
收件人:
CREATE VIEW v_storename_totalnamelength AS
SELECT
(char_length(`a`.`ExtractedLongName`) + char_length(`a`.`ExtractedLongName`)) AS `TotalNameLength`
FROM
`promoter`.`v_storename_extracted` `a`
ORDER BY
(char_length(`a`.`ExtractedLongName`) + char_length(`a`.`ExtractedLongName`)) DESC
;