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

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

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

username =可以访问原始服务器上的数据库的用户的username名。
database_name =原始服务器的数据库名称

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

如果我以root身份login到MySQL并创build数据库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转储文件?

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

这是MySQL的一个已知的错误

错误42996
错误40477

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

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

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

  2. 创build你的数据库并退出

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

你可以用你想要导入的任何MySQL服务器的IP或域replace本地主机。 在mysql提示符下DROP命令的原因是要确保我们从一个空的清洁数据库开始。

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

如果你使用直接admin或cpanel创build你的数据库,你必须使用notepad或notepad ++来编辑你的sql,并将CREATE DATABASE命令改成CREATE DATABASE IF NOT EXISTS in line22

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