7

私はここでかなり奇妙な問題を抱えています。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: ビューの上にビューを作成することがこれまでで最高のアイデアではないことは承知していますが、この場合、それを避けることはできないと考えてください。

4

6 に答える 6

8

use database ビューを作成する前にステートメントを発行すると、問題が解決することがわかりました。これは、MySql バグ レポートバグ #91122「サブクエリからのビューを作成できませんでした (データベースが選択されていません)」に関連しているようです。

dbname.view_name基本的に、構文でビューを作成しようとすると、エラーが表示されることがあります。use databaseしかし、事前にステートメントを発行すれば、すべてがうまくいきます。

于 2020-08-23T15:27:19.547 に答える
2

私はここで非常によく似た問題を抱えていました。権限を既に確認した場合は、ビューを作成する前に使用中のデータベースを明示的に設定してみてください。

于 2019-01-02T19:58:25.677 に答える
0

GRANTパーミッションには欠陥があると思います。

JDBCを使用してデータベースにリモートでアクセスする場合は、ユーザーマシンにもGrantパーミッションを作成する必要があります。

次のような助成金はありますか?そうでない場合は、次のように付与してみてください。

grant all on <database>.* to ‘&lt; username >’@'%' identified by '< passwd >';
于 2012-08-03T18:19:11.950 に答える