【发布时间】:2012-06-27 16:23:27
【问题描述】:
我在这里遇到了一个非常奇怪的问题。我们使用 Pentaho Kettle 来管理我们数据库的模式(它又使用 MySQL JDBC mysql-connector-java-5.1.17.jar)。当尝试创建一个包含另一个视图(本例中为接口)的视图时,我们得到:
2012/06/26 11:46:55 - SQL2 - ERROR : Couldn't execute SQL: CREATE OR REPLACE VIEW `test_delete2` as select * from interfaces
2012/06/26 11:46:55 - SQL2 - ERROR : ANY command denied to user 'ncim'@'xxx.xxx.xxx..xx' for table '/var/mysql/mysql2018/tmp/#sql_4e67_0'
但是,使用相同的语句和用户,但通过 mysql 命令行客户端,可以按预期工作。此外,使用 JDBC 在普通表上创建视图也可以。
这适用于服务器端 Solaris 10 上的 MariaDB 5.2.10,但我们在使用 Oracle MySQL 时也遇到了同样的问题。
有什么好的想法会导致这种情况吗?
PS:我知道在视图上创建视图并不是最好的主意,但暂时假设在这种情况下无法避免。
【问题讨论】:
-
尝试使用 JDBC 运行 SHOW GRANTS。结果如何?
-
我不确定这是否比不使用 JDBC 时显示其他内容有什么好处(并且用户确实拥有权限),但谁知道呢,我会试一试.不过可能需要几天的时间才能让我下次可以访问此环境。
-
将 SHOW GRANTS 的结果添加到问题中。
-
你解决过这个问题吗?我在 php 中使用其他视图创建视图时遇到了与 Mysqli 相同的问题。这对我来说很有意义。
-
抱歉没有好消息,我们刚刚通过调用 mysql 命令行客户端解决了这个问题。