web-dev-qa-db-fra.com

Erreur lors de l'importation du vidage SQL dans MySQL: Base de données inconnue/Impossible de créer la base de données

Je ne comprends pas comment importer un fichier de vidage SQL. Je n'arrive pas à importer la base de données sans d'abord la créer dans MySQL.

C'est l'erreur affichée quand database_name n'a pas encore été créé: 

username = nom d'utilisateur de quelqu'un ayant accès à la base de données sur le serveur d'origine.
database_name = nom de la base de données du serveur d'origine 

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

Si je me connecte à MySQL en tant que root et crée la base de données, 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

puis essayez à nouveau d'importer le 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

Comment suis-je censé importer le fichier de vidage SQL?

83
BryanWheelock

Ouvrez le fichier SQL et commentez la ligne qui tente de créer la base de données existante.

37
Bjorn Tipling

C'est un bogue connu sous MySQL.

bug 42996
bug 40477

Comme vous pouvez le constater, ce problème est connu depuis 2008 et ils ne l’ont pas encore résolu !!!

SOLUTION DE CONTOURNEMENT
Vous devez d’abord créer la base de données à importer. Il n'a pas besoin de tables. Ensuite, vous pouvez importer votre base de données.

  1. commencez par lancer votre ligne de commande MySQL (nom d'utilisateur et mot de passe si nécessaire)
    C:\>mysql -u user -p

  2. Créez votre base de données et quittez 

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. Importez votre base de données sélectionnée à partir du fichier de vidage
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

Vous pouvez remplacer localhost par un IP ou un domaine pour tout serveur MySQL que vous souhaitez importer dans . La raison de la commande DROP dans l'invite mysql est pour être sûr de commencer avec une base de données vide et propre.

49
Max Kielland

Il semble que votre vidage de la base de données inclue les informations nécessaires à la création de la base de données. Donc, ne donnez pas à la ligne de commande MySQL un nom de base de données. Il créera la nouvelle base de données et y basculera pour effectuer l'importation.

11
Paul Tomblin

Si vous créez votre base de données en administrateur direct ou cpanel, vous devez éditer votre SQL avec notepad ou notepad ++ et modifier la commande CREATE DATABASE en CREATE DATABASE IF NOT EXISTS en ligne22

4
MaysaM

Je crée la base de données moi-même en utilisant la ligne de commande. Ensuite, essayez à nouveau d'importer, cela fonctionne.

0
wmlhust