将SQL转储导入MySQL时出错:未知数据库/无法创建数据库

我很困惑如何导入SQL转储文件。 如果不首先在MySQL中创建数据库,我似乎无法导入数据库。

这是database_name尚未创建时显示的错误:

database_name =有权访问原始服务器上的数据库的用户的用户名。
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转储文件?

5个解决方案
49 votes

这是MySQL的一个已知错误。

错误42996
错误40477

你可以看到这是自2008年以来的一个已知问题,他们还没有修复它!

周围的工作
首先需要创建要导入的数据库。 它不需要任何表格。 然后您可以导入数据库。

  1. 首先启动MySQL命令行(如果需要,请应用用户名和密码)
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

  2. 创建数据库并退出

    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql
  3. 从转储文件导入所选数据库
    C:\>mysql -u user -p -h localhost -D database -o < dumpfile.sql

对于要导入的任何MySQL服务器,可以将localhost替换为IP或域。在mysql提示符中DROP命令的原因是确保我们从一个空的干净的数据库开始。

Max Kielland answered 2019-09-17T05:05:13Z
37 votes

打开sql文件并注释掉尝试创建现有数据库的行。

Bjorn Tipling answered 2019-09-17T05:03:32Z
11 votes

听起来您的数据库转储包含用于创建数据库的信息。 所以不要给MySQL命令行一个数据库名称。 它将创建新数据库并切换到它进行导入。

Paul Tomblin answered 2019-09-17T05:05:40Z
4 votes

如果您使用直接管理员或cpanel创建数据库,则必须使用记事本或记事本++编辑sql并将CREATE DATABASE命令更改为第22行中的CREATE DATABASE IF NOT EXISTS

MaysaM answered 2019-09-17T05:06:05Z
0 votes

我使用命令行自己创建数据库。 然后尝试再次导入,它的工作原理。

wmlhust answered 2019-09-17T05:06:31Z
translate from https://stackoverflow.com:/questions/859313/error-importing-sql-dump-into-mysql-unknown-database-cant-create-database