Error al importar el volcado de SQL en MySQL: base de datos desconocida / no se puede crear la base de datos

84

Estoy confundido sobre cómo importar un archivo de volcado SQL. Parece que no puedo importar la base de datos sin crear primero la base de datos en MySQL.

Este es el error que se muestra cuando database_nameaún no se ha creado:

username= nombre de usuario de alguien con acceso a la base de datos en el servidor original.
database_name= nombre de la base de datos del servidor original

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

Si inicio sesión en MySQL como root y creo la base de datos, 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

luego intente importar el volcado sql nuevamente:

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

¿Cómo se supone que debo importar el archivo de volcado de SQL?

BryanWheelock
fuente

Respuestas:

39

Abra el archivo sql y comente la línea que intenta crear la base de datos existente.

Bjorn
fuente
8
@BryanWheelock Creo que una opción mejor (industrializable) sería no seleccionar la base de datos en su comando, por lo que se convierte en: "mysql -u username -p -h localhost <dumpfile.sql". Database_name es un parámetro opcional. Si su archivo de volcado contiene una instrucción "crear base de datos", entonces se creará.
toni07
Solo para ampliar esto un poco, la primera línea de mi archivo * .sql tenía esto: CREATE DATABASE IF NOT EXISTS `database_name` / *! 40100 DEFAULT CHARACTER SET latin1 * /; Cambiando esto a (nota / * al inicio): / * CREAR BASE DE DATOS SI NO EXISTE `database_name` / *! 40100 DEFAULT CHARACTER SET latin1 * /; efectivamente comenta el comando e IMPORT debería funcionar. Solo recuerde estar activo dentro de la base de datos en la que desea que IMPORT inserte las tablas, de lo contrario, ¡podría ser un desastre!
ntk4
49

Este es un error conocido en MySQL.

error 42996
error 40477

Como puede ver, este ha sido un problema conocido desde 2008 y aún no lo han solucionado.

Propocionar comentarios Solución
Primero debe crear la base de datos para importar. No necesita mesas. Entonces puedes importar tu base de datos.

  1. primero inicie su línea de comando MySQL (aplique el nombre de usuario y la contraseña si es necesario)
    C:\>mysql -u user -p

  2. Crea tu base de datos y sal

    mysql> DROP DATABASE database;  
    mysql> CREATE DATABASE database;  
    mysql> Exit  
    
  3. Importe su base de datos seleccionada desde el archivo de volcado
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

Puede reemplazar localhost con una IP o dominio para cualquier servidor MySQL al que desee importar. El motivo del comando DROP en el indicador de mysql es asegurarse de que comenzamos con una base de datos vacía y limpia.

Max Kielland
fuente
2
Agradezco la respuesta. Ahora es 2012 y parece que el error sigue ahí, ya que utilicé su respuesta para restaurar mi base de datos de wordpress en un nuevo servidor (tenga en cuenta, sin embargo, que a sus elogios de MySQL les falta el final ';'. ;-)
Karl
12

Parece que el volcado de su base de datos incluye la información para crear la base de datos. Así que no le dé a la línea de comandos de MySQL un nombre de base de datos. Creará la nueva base de datos y la cambiará para realizar la importación.

Paul Tomblin
fuente
4

Si crea su base de datos en administración directa o cpanel, debe editar su sql con el bloc de notas o el bloc de notas ++ y cambiar el CREATE DATABASEcomando a CREATE DATABASE IF NOT EXISTSen line22

MaysaM
fuente
0

Yo mismo creo la base de datos usando la línea de comando. Luego intente importar nuevamente, funciona.

wmlhust
fuente