将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要导入的数据库。 它不需要任何表格。 然后你可以导入你的数据库。
-
首先启动你的MySQL命令行(如果需要,可以使用用户名和密码)
C:\>mysql -u user -p
-
创build你的数据库并退出
mysql> DROP DATABASE database; mysql> CREATE DATABASE database; mysql> Exit
-
从转储文件中导入您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数据库。 然后尝试再次导入,它的工作。