在重建 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
在导入之前手动创建数据库,因为那将为您处理。
为了导入数据库,您需要使用mysql
notmysqldump
来自动创建数据库(仅在您使用--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