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

有帮助吗?

解决方案

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

其他提示

这是一个 已知错误 在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

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

这听起来像你的数据库转储包括用于创建数据库的信息。所以,不要给MySQL命令行的数据库名。这将创建新的数据库,并切换到它做的进口。

如果您在创建直接管理或的cPanel你的数据库,你必须编辑记事本或记事本+ +和变化CREATE DATABASE命令你的SQL在line22到CREATE DATABASE IF NOT EXISTS

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top