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


84

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

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

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

Answers:


39

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


8
@BryanWheelock我认为一个更好的(可工业化的)选项是不选择命令中的数据库,因此它变成:“ mysql -u用户名-p -h本地主机<dumpfile.sql”。database_name是可选参数。如果转储文件包含“创建数据库”指令,则将创建它。
toni07年

只是为了详细说明一下,我的* .sql文件的第一行就包含以下内容:如果不存在,则创建数据库`database_name` / *!40100 DEFAULT CHARACTER SET latin1 * /; 将其更改为(在开始时注意/ *):/ *如果不存在`database_name` / *,则创建数据库40100 DEFAULT CHARACTER SET latin1 * /; 有效地注释掉该命令,并且IMPORT应该起作用。只要记住要在要IMPORT将表插入其中的数据库中处于活动状态,否则您可能会陷入混乱!
ntk4

49

这是MySQL的一个已知错误

错误42996错误40477

如您所见,自2008年以来这是一个已知的问题,他们尚未解决!!!

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

  1. 首先启动您的MySQL命令行(如果需要,请应用用户名和密码)
    C:\>mysql -u user -p

  2. 创建数据库并退出

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

您可以将IP地址或域替换为要导入到的任何MySQL服务器的localhost。在mysql提示符下使用DROP命令的原因是要确保我们从一个空而干净的数据库开始。


2
我很感谢答案。现在是2012年,看来该错误仍然存​​在,因为我使用了您的回答将我的wordpress数据库恢复到了新服务器上(但是请注意,您的MySQL推荐缺少结尾“;”。;-)
Karl

12

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


4

如果您以直接管理员或cpanel创建数据库,则必须使用notepad或notepad ++编辑sql并将CREATE DATABASE命令更改为CREATE DATABASE IF NOT EXISTSline22


0

我自己使用命令行创建数据库。然后尝试再次导入,它可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.