Errore durante l'importazione del dump SQL in MySQL: database sconosciuto / impossibile creare database


84

Sono confuso come importare un file di dump SQL. Non riesco a importare il database senza creare prima il database in MySQL.

Questo è l'errore visualizzato quando database_namenon è stato ancora creato:

username= nome utente di qualcuno con accesso al database sul server originale.
database_name= nome del database dal server originale

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

Se accedo a MySQL come root e creo il database, 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

quindi prova a importare di nuovo il dump 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

Come dovrei importare il dumpfile SQL?

Risposte:


39

Apri il file sql e commenta la riga che tenta di creare il database esistente.


8
@BryanWheelock Penso che un'opzione migliore (industrializzabile) sarebbe quella di non selezionare il database nel tuo comando, quindi diventa: "mysql -u username -p -h localhost <dumpfile.sql". Il database_name è un parametro facoltativo. Se il file di dump contiene un'istruzione "crea database", verrà creato.
toni07

Solo per approfondire un po 'questo, la primissima riga nel mio file * .sql aveva questo: CREATE DATABASE IF NOT EXISTS `database_name` / *! 40100 DEFAULT CHARACTER SET latin1 * /; Cambiandolo in (nota / * all'inizio): / * CREATE DATABASE SE NON ESISTE `database_name` / *! 40100 DEFAULT CHARACTER SET latin1 * /; commenta efficacemente il comando e IMPORTA dovrebbe funzionare. Ricorda solo di essere attivo all'interno del database in cui desideri che l'IMPORTAZIONE inserisca le tabelle, altrimenti potresti essere in un casino!
ntk4

49

Questo è un bug noto in MySQL.

bug 42996
bug 40477

Come puoi vedere questo è un problema noto dal 2008 e non l'hanno ancora risolto !!!

LAVORI INTORNO
È innanzitutto necessario creare il database da importare. Non necessita di tabelle. Quindi puoi importare il tuo database.

  1. per prima cosa avvia la riga di comando MySQL (applica nome utente e password se necessario)
    C:\>mysql -u user -p

  2. Crea il tuo database ed esci

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. Importa il database selezionato dal file di dump
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

Puoi sostituire localhost con un IP o un dominio per qualsiasi server MySQL in cui desideri importare. La ragione per il comando DROP nel prompt di mysql è essere sicuri di iniziare con un database vuoto e pulito.


2
Apprezzo la risposta. Ora è il 2012 e sembra che il bug sia ancora lì, perché ho usato la tua risposta per ripristinare il mio database wordpress su un nuovo server (nota tuttavia, i tuoi elogi MySQL mancano della fine ';'. ;-)
Karl

12

Sembra che il dump del database includa le informazioni per la creazione del database. Quindi non dare alla riga di comando di MySQL un nome di database. Creerà il nuovo database e passerà ad esso per eseguire l'importazione.


4

Se crei il tuo database in direct admin o cpanel, devi modificare il tuo sql con notepad o notepad ++ e cambiare il CREATE DATABASEcomando CREATE DATABASE IF NOT EXISTSin line22


0

Creo io stesso il database utilizzando la riga di comando. Quindi prova a importare di nuovo, funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.