mysql - 将 SQL 转储导入 MySQL 时出错 : Unknown database/Can't create database

标签 mysql sql mysqldump mysql-error-1049 mysql-error-1007

我很困惑如何导入 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 转储文件?

最佳答案

这是 MySQL 的一个已知错误

bug 42996
bug 40477

如您所见,这自 2008 年以来一直是一个已知问题,但他们尚未修复它!!!

解决方法
您首先需要创建要导入的数据库。它不需要任何 table 。然后你就可以导入你的数据库了。

  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

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

关于mysql - 将 SQL 转储导入 MySQL 时出错 : Unknown database/Can't create database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/859313/

相关文章:

mysql - 如何从mysql命令行恢复mysql xml数据库文件?

mysql - mysql转储文件大小和数据库大小的差异

phpMyAdmin 不允许将数字转换为十进制?

mysql - SQL 创建一个带有增量计数器的一列表

mysql - MySQL 中是否可以有条件地计数和添加行标签?

mysql - 从表的列中删除以 <div class ="xxx"> 和 </div> 开头的字符串

php - 通过 PHP 的 mysqldump

MySQL ORDER BY 导致 LEFT JOIN 速度极度减慢

python - 如何将html数据存储在mysql数据库中?

mysql - 同一张表上的多个连接