2017-05-31 4 views
0

次のコマンドを使用してSQLファイルをMySQLデータベースにインポートしようとしています。データベース名にアンダースコアが含まれているとSQLファイルをインポートできません

mysql --user example -p --database example_database < example.sql 

これはエラーを返します:

ERROR 1044 (42000) at line 22: Access denied for user 'example'@'%' to database 'example' 

は、データベース名がアンダースコアの後に、すべてをトリミングしています注意してください。次のコマンドを使用してMySqlに接続できるので、接続の詳細は間違いありません。

mysql --user example -p --database example_database 

これは何が起こっているのですか?

答えて

1

に可能性のある説明を全体の名前をインポートできるようにする必要があります_それで

mysql --user example -p --database `example_database` < example.sql 

でデータベース名を中心に ``入れてみてください観察された動作は、example.sqlファイルに文が含まれていることです。

USE example; 

ユーザー'example'@'%'にそのデータベースに対する権限が付与されていないため、その文が実行されているときにエラーがスローされます。

(私は--databaseオプションの値が右の下線文字の前にトリミングされているとは思わない。データベース名にアンダースコアについて推測が赤ニシンです。)

+0

そうだった。 'USE'ステートメントを含む' mysqldump --databases example'を使ってSQLをエクスポートしました。データベース名の前に "--databases"オプションを付けずにエクスポートすると、問題が修正されました。ありがとう! – smilledge

0

編集は以下のコメントを追加するには:それはあなたがにインポートしている、EXAMPLE.TXTデータベースを参照ているように見えます

。最初にexample.sqlデータベース上の 'example'ユーザーにすべての権限を与えましたか?

GRANT ALL PRIVILEGES ON example.* TO 'example'@'%' WITH GRANT OPTION;


ような何かこれは、あなたが

+0

全く同じエラー。私は、私が考えることができるあらゆる方法で引数を引用して指定しようとしたことを言及する必要があります。 '--database = example_database'、' --database = "example_database" '、' --database = "example \ _database" 'など、すべて同じ結果を返しました。 – smilledge

+0

ああ!今私はあなたのexampleのユーザーのためにインポートしているあなたのexample.sqlデータベースにすべての権限を最初に与えていますか? 'GRANT ALL PRIVILEGES ON EXAMPLE。* '' '%' 'WITH GRANT OPTION;' – phandolin

関連する問題