MySql视图错误:“视图'tablet_001.hisrec'引用了无效的表或列或函数或视图的定义者/调用者缺少使用它们的权限”。

6
当执行此代码时。
SELECT count(*) FROM hisrec

出现了这个错误

视图'tablet_001.hisrec'引用了无效的表格或列或函数,或者视图的定义者/调用者没有使用它们的权限

如果执行了这个操作

SELECT COD FROM hisrec

出现相同的错误

但是如果执行以下命令

SELECT * FROM hisrec

一切正常:S

为什么呢?

我是root...拥有所有权限!


1
hisrec 是如何定义的? - Joachim Isaksson
这是一个正常的视图,在任何计算机上都可以看到相同的视图(其他服务器)正常运作,但在一些客户端上则出现了问题...(对我的英语表示抱歉) - Fernando Diaz Toledano
3个回答

6
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'tablet_001' AND TABLE_NAME = 'hisrec';

检查您的视图,看看问题出在哪里,如果您不知道,请在此处发布。


1
我只是好奇,这个命令有什么特别之处,SHOW CREATE VIEW hisrec \G 无法检索到吗? - cezar

0
  • 我曾经遇到过同样的错误。那个错误是因为用户(除了root用户)没有权限使用那个表。
  • 所以首先要授予用户使用该表的权限。使用root用户授予权限。
grant select on database_name.table_name to user@localhost ;

同样的,您可以授予更新或插入的权限。


0

我在mysql 5.6.x上遇到了类似的问题。

select * from view可以正常工作。

select count(*) from view导致了OP的错误信息。

通过将Order By子句从视图定义中删除来解决问题。


应该是 "select count(*) from view"。 - user3313965
1
您可以编辑您的原始帖子...这对于未来的读者比添加评论更有用。谢谢! - Daniel F. Thornton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接