错误1049(42000):未知数据库'mydatabasename'。

53

我正在尝试从.sql文件中恢复数据库,我已经在phpmyadmin中创建了数据库,并且在我要还原到数据库的.sql文件中也使用了“如果不存在则创建”命令,而且phpmyadmin和.sql文件中数据库的名称都相同,为“mydatabase”。

以下是我用于恢复数据库的命令。

mysql -uroot -pmypassword mydatabase<mydatabase.sql;

执行上述命令后,我遇到了以下错误,我已经给予该数据库用户所有权限。

ERROR 1049 (42000): Unknown database 'mydatabasename'

7
mydatabase 不等于 mydatabasename - eggyal
2
你有检查过你的 .sql 文件吗?也许它引用了 'mydatabasename'。 - Sébastien
在脚本中删除 USE mydatabasename,然后再试一次。 - Sathish D
1
这个回答解决了你的问题吗?将SQL转储文件导入MySQL时出错:未知数据库/无法创建数据库 - João Pimentel Ferreira
这里有许多可疑的答案,解决此问题的方法在这里:https://dev59.com/xnRA5IYBdhLWcg3wsgLq#3034381 - João Pimentel Ferreira
19个回答

39

如果转储文件包含:

CREATE DATABASE mydatabasename;
USE mydatabasename; 

您可以在CLI中直接使用:

mysql -uroot –pmypassword < mydatabase.sql

它运作正常。


仅返回已翻译的文本,但您的回答提供了最终线索。 - Alberto Jaimes
这很有帮助,在得到这个提示后,我进入了 tmp 文件夹中的 db_dump.sql 文件,发现它只装载了一个表格,即在之前出现错误信息的那个表格。实际的转储文件将包含 13 个数据库(我通过进入远程 mysql 服务器然后使用命令 SHOW DATABASES 来检查),而使用此裁剪转储文件,则只能得到标准数据库。我必须再次加载原始的 db_dump.sql 才能加载所有数据库。 - questionto42

9
无论你的转储文件叫什么名字,重要的是它的内容。
你需要检查你的mydatabase.sql文件,并找到这一行:
USE mydatabasename;

这个名字很重要,而且这是您在命令中必须使用的名称:

mysql -uroot -pmypassword mydatabasename<mydatabase.sql;

有两个选项供您选择:

  1. 从您的转储文件中删除 USE mydatabasename;,并继续使用以下命令:
    mysql -uroot -pmypassword mydatabase<mydatabase.sql;
  2. 将您本地的数据库名称更改为与SQL转储文件中的名称相匹配,并使用以下命令:
    mysql -uroot -pmypassword mydatabasename<mydatabase.sql;

非常感谢,但是这个命令对我有效:"mysql -uroot -pmypassword -h localhost -D mydatabase < mydatabase.sql",在mysql转储文件中没有使用mydatabase和CREATE DATABASE mydatabase IF NOT EXIST。 - La Chi

4

我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:

我解决了这个问题,并给你一些线索:

1. - 正如 @eggyal 的评论所说:

mydatabase != mydatabasename

所以,请检查您的数据库名称

2. - 如果您要在文件中创建数据库,您不能设置尚未创建的数据库:

mysql -uroot -pmypassword mydatabase<mydatabase.sql;

更改为:

mysql -uroot -pmypassword <mydatabase.sql;

4

打开 SQL 文件,注释掉试图创建已存在数据库的行,并删除 USE mydatabasename,然后再次尝试。


3

您还可以创建一个名为'mydatabasename'的数据库,然后再尝试恢复它。

使用MySQL CLI创建新数据库:

mysql -u[username] -p[password]
CREATE DATABASE mydatabasename;

然后尝试恢复您的数据库:

mysql -u[username] -p[password] mydatabase<mydatabase.sql;

3

创建数据库时报错未知数据库, 登录到mysql shell:

sudo mysql -u root -p
create database db_name;

现在尝试使用.sql文件还原数据库,-p标志会在命令执行后要求输入SQL用户密码。

sudo mysql -u root -p db_name < db_name.sql

1

您也可以尝试

> mysql mysql

你可以连接到MySQL数据库,从中创建自己的模式。

mysql> CREATE DATABASE mydb; USE mydb;

1
mysql -e "show databases;" 
mysql -e "create database mydatabasename;" 
mysql -e "use mydatabasename;" 

你能否编辑你的问题并解释和详细说明你的答案? - Michael M.

0
如果最初输入了数据库名称不正确,然后执行了 "Php artisan migrate" 命令,您将收到一个错误消息。即使稍后修正了数据库名称,您也需要关闭服务器并重新启动服务器。

0

我也遇到了同样的问题,我在命令行上运行了这个命令,就像你一样,在结尾处添加了';'。删除它解决了这个问题。 改为:

mysql -uroot -pmypassword mydatabase<mydatabase.sql;

试一下这个

mysql -uroot -pmypassword mydatabase<mydatabase.sql

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接