为什么 Mysql 或 Mysqldump 说错误 1049 未找到数据库?

为什么 Mysql 或 Mysqldump 说错误 1049 未找到数据库?

在重建 Debian 8 VPS 之前,我导出了 WordPress 的 SQL 数据库,因为我无法修复收到的一些错误消息。我做了以下事情。

$ mysql -u root -p wordpressDB < /var/www/html/example.com/backups/backup.sql

我收到的输出消息是

ERROR 1049 (42000): Unknown database 'wordpressDB'

我也尝试过这么做。

MySQL -u wordpress -p wordpressDB < backup.sql

但是当我输入密码时,它说密码无效。我用记事本打开了 SQL 文件,数据库名称确实存在。我使用 mysqldump 导出此文件,并尝试使用 MySQL 和 mysqldump 导入,但两次都失败了。

答案1

根据您在问题下方的评论,听起来您在备份数据库--databases时可能省略了该选项。mysqldump

如果您通过执行 来备份数据库mysqldump <database-name>,则备份不会为您重新创建数据库。从该备份恢复时,您需要创建要导入的数据库,然后导入该数据库,该数据库可能与您之前导出的数据库同名,也可能不同。

如果您不想被要求这样做,那么在创建备份时,您mysqldump --databases <database-name>可以像这样导出:。这样做,当将备份导入回 MySQL 时,它将具有重新创建数据库的命令。

这两种用法之间还有其他区别。如果您使用第一个版本,那么数据库名称后面的任何符号都被视为要包含在备份中的表名。例如:mysqldump MyDatabase Table1 Table2 Table3备份表 1、2 和 3,但不备份其他表。

在第二种变体中,初始数据库名称后的所有符号也被视为附加数据库名称,因此您可以获得多个数据库。mysqldump --databases HRDatabase WebsiteDatabase DevTestDatabase这应该会导出所有三个数据库。

但回到主要观点:下次使用时mysqldump,如果您指定该--databases选项,那么您将不需要use在导入之前手动创建数据库,因为那将为您处理。


为了导入数据库,您需要使用mysqlnotmysqldump来自动创建数据库(仅在您使用--databases <database-name>选项导出的情况下:(
mysql -u root -p < /var/www/html/example.com/backups/backup.sql
先前的评论经过布赖恩

用于mysqldump导入数据库不会自动创建数据库,即使您使用--databases <database-name>选项导出它,如果不先创建数据库,这些将不起作用:

mysqldump -u root -p < /var/www/html/example.com/backups/backup.sql
mysqldump --all-databases -u root -p < /var/www/html/example.com/backups/backup.sql
mysqldump --databases mydatabase_name -u root -p < /var/www/html/example.com/backups/backup.sql

相关内容