当我尝试创建一些,但当我调用它出现错误1356:
创建视图
CREATE VIEW monitoring_consult AS (
SELECT
m.id,
account.valor AS 'phone_number',
IF((c.valor REGEXP '^[0-9]+$' OR c.valor IS NULL) AND cn.short_name IS NOT NULL, cn.short_name, c.valor) AS 'category',
IF(pn.id IS NOT NULL, pn.id, p.valor) AS 'provider',
n.valor AS 'nominal',
m.last_page,
pn.name AS 'provider_name',
IF(pay.valor is null, 'Uncompleted', pay.valor) AS 'payment',
timeEnd,
DATE_FORMAT(m.timeEnd, '%d/%m/%Y') as 'date'
FROM
monitoring AS m
LEFT JOIN feature AS account ON m.id = account.id AND account.valor IS NOT NULL AND (account.page = 'PV') AND account.type = 'send'
LEFT JOIN feature AS c ON m.id = c.id_monitoring AND c.valor IS NOT NULL AND (c.page = 'MA' OR c.page = 'IN') AND c.type = 'select'
LEFT JOIN feature AS p ON m.id = p.id_monitoring AND p.page = 'PO' AND p.valor IS NOT NULL AND p.type = 'select'
LEFT JOIN feature AS n ON m.id = n.id_monitoring AND n.valor IS NOT NULL AND n.page = 'OAP' AND n.type = 'select'
LEFT JOIN feature AS pay ON m.id = pay.id_monitoring AND m.last_page = 'OK' AND pay.type = 'userAction' AND pay.name = 'paymentStatus' AND pay.valor = 'Completed'
LEFT JOIN terminais AS term ON m.id_terminal = term.id
LEFT JOIN provider AS pn ON (p.valor = pn.id) OR (c.valor REGEXP '^[0-9]+$' AND c.valor = pn.id)
LEFT JOIN category AS cn ON pn.id_category = cn.id
group by m.id
having category is not null
)
调用视图:
select * from monitoring_consult
返回:
Error Code: 1356. View 'qiwi.monitoring_consult' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
Mysql版本- 5.5.32-日志
有人知道为什么会这样吗?
7条答案
按热度按时间bd1hkmkf1#
每次我导入一个mysqldump导出时都会遇到这个特殊的问题,其中包含自动视图创建,
出现这样的问题是因为在mysqldump中创建视图(当您再次重新导入时),使用“SQL安全定义符”,
我不知道这是否是一个mysql的错误,但对我来说,删除和应用新的权限的看法,并没有解决问题,重新创建视图没有“SQL安全定义符”,解决我的问题,我希望这是你的情况。
再见
ddrv8njm2#
这些是
1.任何连接表都不存在
1.您尝试获取的任何字段不存在(您可能已被删除)
baubqpgj3#
我得到了相同的错误代码,并能够在一定程度上确定它。它似乎出现时,一个对象两个(或更多?)级以下不再可用。这里是一些代码来重现这个问题。
我不知道from子句中是否有视图,但
terminais
的(似乎是)拼写错误可能导致了它。yqhsw0fo4#
创建视图时,尝试指定如下定义符:
其中DEFINER
user
必须对链接到视图的任何表具有适当的权限5cnsuln75#
你好,我得到了这个错误后,改变我的数据库模型。碰巧是一个现有的视图引用不存在的字段。
因此,解决方案是删除当前视图并创建一个新视图,考虑新模型而不是关注用户权限。
希望对某人有帮助:)
dffbzjpn6#
我遇到了同样的问题,但我仍然不知道是什么导致了这个问题,因为视图使用的表都没有被更改。
我的解决方案是删除旧视图并创建一个新视图,这次我在视图的顶部指定了以下内容。
knpiaxh17#
这个消息有时会引起误解。我得到了同样的警告,尽管我已经确保定义者用户有正确的权限,并且所有引用的表/字段都是正确的。
运行后
我注意到输出包含
1 warning
,因此在此之后我运行这让我看到了真正的问题所在。