Fehler beim Importieren des SQL-Dumps in MySQL: Unbekannte Datenbank / Datenbank kann nicht erstellt werden

84

Ich bin verwirrt, wie man eine SQL-Dump-Datei importiert. Ich kann die Datenbank scheinbar nicht importieren, ohne sie zuerst in MySQL zu erstellen.

Dies ist der Fehler, der angezeigt wird, wenn er database_namenoch nicht erstellt wurde:

username= Benutzername einer Person mit Zugriff auf die Datenbank auf dem ursprünglichen Server.
database_name= Name der Datenbank vom ursprünglichen Server

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

Wenn ich mich als root bei MySQL anmelde und die Datenbank erstelle, 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

Versuchen Sie dann erneut, den SQL-Speicherauszug zu importieren:

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

Wie soll ich das SQL-Dumpfile importieren?

BryanWheelock
quelle

Antworten:

39

Öffnen Sie die SQL-Datei und kommentieren Sie die Zeile aus, in der versucht wird, die vorhandene Datenbank zu erstellen.

Björn
quelle
8
@BryanWheelock Ich denke, eine bessere (industrialisierbare) Option wäre, die Datenbank in Ihrem Befehl nicht auszuwählen, daher lautet sie: "mysql -u Benutzername -p -h localhost <dumpfile.sql". Der Datenbankname ist ein optionaler Parameter. Wenn Ihre Dump-Datei eine Anweisung zum Erstellen einer Datenbank enthält, wird diese erstellt.
Toni07
Um dies etwas näher zu erläutern, enthielt die allererste Zeile in meiner * .sql-Datei Folgendes: CREATE DATABASE IF NOT EXISTS `database_name` / *! 40100 DEFAULT CHARACTER SET latin1 * /; Ändern Sie dies in (Anmerkung / * zu Beginn): / * CREATE DATABASE IF NOT EXISTS `database_name` / *! 40100 DEFAULT CHARACTER SET latin1 * /; Kommentiert den Befehl effektiv aus und IMPORT sollte funktionieren. Denken Sie daran, in der Datenbank aktiv zu sein, in die der IMPORT die Tabellen einfügen soll, da Sie sonst möglicherweise in Unordnung geraten!
ntk4
49

Dies ist ein bekannter Fehler bei MySQL.

Fehler 42996
Fehler 40477

Wie Sie sehen, ist dies seit 2008 ein bekanntes Problem und sie haben es noch nicht behoben !!!

UMARBEITEN
Sie müssen zuerst die zu importierende Datenbank erstellen. Es braucht keine Tabellen. Dann können Sie Ihre Datenbank importieren.

  1. Starten Sie zuerst Ihre MySQL-Befehlszeile (wenden Sie bei Bedarf Benutzername und Passwort an).
    C:\>mysql -u user -p

  2. Erstellen Sie Ihre Datenbank und beenden Sie

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. Importieren Sie Ihre ausgewählte Datenbank aus der Dump-Datei
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

Sie können localhost durch eine IP oder Domain für jeden MySQL-Server ersetzen, auf den Sie importieren möchten. Der Grund für den DROP-Befehl in der MySQL-Eingabeaufforderung besteht darin, sicherzustellen, dass wir mit einer leeren und sauberen Datenbank beginnen.

Max Kielland
quelle
2
Ich schätze die Antwort. Es ist jetzt 2012 und es scheint, dass der Fehler immer noch da ist, denn ich habe Ihre Antwort verwendet, um meine WordPress-Daten auf einem neuen Server wiederherzustellen (beachten Sie jedoch, dass Ihren MySQL-Empfehlungen das Ende ';' fehlt ;-)
Karl
12

Es hört sich so an, als ob Ihr Datenbankspeicherauszug die Informationen zum Erstellen der Datenbank enthält. Geben Sie der MySQL-Befehlszeile also keinen Datenbanknamen. Es wird die neue Datenbank erstellt und zu ihr gewechselt, um den Import durchzuführen.

Paul Tomblin
quelle
4

Wenn Sie Ihre Datenbank in Direct Admin oder Cpanel erstellen, müssen Sie Ihre SQL mit Notepad oder Notepad ++ bearbeiten und den CREATE DATABASEBefehl CREATE DATABASE IF NOT EXISTSin Zeile 22 ändern

MaysaM
quelle
0

Ich erstelle die Datenbank selbst über die Kommandozeile. Versuchen Sie dann erneut zu importieren, es funktioniert.

wmlhust
quelle