将SQL转储导入MySQL时出错:未知数据库/Can';不要创建数据库

将SQL转储导入MySQL时出错:未知数据库/Can';不要创建数据库,mysql,sql,mysqldump,mysql-error-1049,mysql-error-1007,Mysql,Sql,Mysqldump,Mysql Error 1049,Mysql Error 1007,我不知道如何导入SQL转储文件。如果不先在MySQL中创建数据库,我似乎无法导入数据库 这是尚未创建数据库\u name时显示的错误: username=可以访问原始服务器上数据库的用户的用户名。 数据库\u name=原始服务器中的数据库名称 $mysql-u username-p-h localhost数据库\u name

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

这是尚未创建
数据库\u name
时显示的错误:

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

$mysql-u username-p-h localhost数据库\u name
如果我以root用户身份登录MySQL并创建数据库,
database\u 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
$mysql-u username-p database\u name

如何导入SQL转储文件?

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

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

这是MySQL的一个已知错误


正如你所看到的,这是自2008年以来的一个已知问题,他们还没有解决它

解决问题
首先需要创建要导入的数据库。它不需要任何桌子。然后可以导入数据库

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

  • 创建数据库并退出

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

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

    如果您在direct admin或cpanel中创建数据库,您必须使用记事本或记事本++编辑sql,并将第22行中的
    创建数据库
    命令更改为
    创建数据库(如果不存在)。

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

    我感谢您的回答。现在是2012年,漏洞似乎仍然存在,因为我使用您的答案将我的wordpress数据库恢复到新服务器(注意,您的MySQL数据库缺少结尾“;”。;-)@BryanWheelock我认为更好的(可工业化的)选项是不在您的命令中选择数据库,因此它变成:“mysql-u username-p-h localhost