SQLダンプをMySQLにインポート中にエラーが発生しました:不明なデータベース/データベースを作成できません


84

SQLダンプファイルをインポートする方法がわかりません。MySQLで最初にデータベースを作成しないと、データベースをインポートできないようです。

これは、database_nameまだ作成されていない場合に表示されるエラーです。

username=元のサーバー上のデータベースにアクセスできるユーザーのユーザー名。
database_name=元のサーバーのデータベースの名前

$ mysql -u username -p -h localhost database_name < dumpfile.sql   
Enter password:  
ERROR 1049 (42000): Unknown database 'database_name' 

rootとしてMySQLにログインし、データベースを作成すると、 database_name

mysql -u root  
create database database_name;  
create user username;# same username as the user from the database I got the dump from.  
grant all privileges on database_name.* to username@"localhost" identified by 'password';  
exit mysql

次に、SQLダンプのインポートを再試行します。

$ mysql -u username -p database_name < dumpfile.sql  
Enter password:  
ERROR 1007 (HY000) at line 21: Can't create database 'database_name'; database exists

SQLダンプファイルをインポートするにはどうすればよいですか?

回答:


39

SQLファイルを開き、既存のデータベースを作成しようとしている行をコメントアウトします。


8
@BryanWheelockより良い(産業化可能な)オプションは、コマンドでデータベースを選択しないことだと思うので、「mysql -u username -p -h localhost <dumpfile.sql」になります。database_nameはオプションのパラメーターです。ダンプファイルに「データベースの作成」命令が含まれている場合は、それが作成されます。
toni07 2015年

これについて少し詳しく説明すると、*。sqlファイルの最初の行に次のように記述されています。CREATEDATABASEIFNOT EXISTS `database_name` / *!40100 DEFAULT CHARACTER SET latin1 * /; これを(開始時に/ *に注意)に変更します。/*存在しない場合はデータベースを作成します `database_name` / *!40100 DEFAULT CHARACTER SET latin1 * /; コマンドを効果的にコメントアウトすると、IMPORTが機能するはずです。IMPORTにテーブルを挿入させたいデータベース内でアクティブであることを忘れないでください。そうしないと、混乱する可能性があります。
ntk4

49

これはMySQLの既知のバグです。

バグ42996
バグ40477

ご覧のとおり、これは2008年以降の既知の問題であり、まだ修正されていません。

回避策
最初に、インポートするデータベースを作成する必要があります。テーブルは必要ありません。次に、データベースをインポートできます。

  1. 最初にMySQLコマンドラインを起動します(必要に応じてユーザー名とパスワードを適用します)
    C:\>mysql -u user -p

  2. データベースを作成して終了します

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. 選択したデータベースをダンプファイルからインポートします
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

localhostは、インポート先のMySQLサーバーのIPまたはドメインに置き換えることができます。mysqlプロンプトでDROPコマンドを実行する理由は、空のクリーンなデータベースから開始するようにするためです。


2
答えてくれてありがとう。2012年になりましたが、バグはまだ残っているようです。あなたの回答を使用して、ワードプレスのデータベースを新しいサーバーに復元しました(ただし、MySQLの表彰には末尾の「;」がありません。;-)
Karl

12

データベースダンプには、データベースを作成するための情報が含まれているようです。したがって、MySQLコマンドラインにデータベース名を付けないでください。新しいデータベースを作成し、それに切り替えてインポートを実行します。


4

直接管理またはcpanelでデータベースを作成する場合は、メモ帳またはメモ帳++を使用してSQLを編集し、CREATE DATABASEコマンドをCREATE DATABASE IF NOT EXISTS22行目に変更する必要があります。


0

コマンドラインを使用して自分でデータベースを作成します。次に、もう一度インポートしてみてください。動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.