我有一个备份数据库的脚本,其中包含多个表和从表构建的 View 。
使用的命令是:
mysqldump -u UserName -ppassword -h hostname DatabaseName > dump.sql;
但是我注意到一些 View 定义在表定义之前被备份。这会导致使用经典恢复时出现问题
mysql -u UserName -p < dump.sql
当它试图创建 View 时,它需要的表还不存在。可以编辑要恢复的转储文件,但我想知道:
有没有办法确保 mysqldump
以正确的顺序备份表和 View ?或者有没有一种方法可以从转储中恢复,该转储将首先找到要创建的正确表(或创建合理的临时表)?
编辑版本:
mysqldump Ver 10.11 Distrib 5.0.51b,适用于 redhat-linux-gnu (x86_64)
最佳答案
根据我的经验,mysqldump 总是将“create view”语句放在最后,在所有“create table”语句之后。所以我不确定你为什么会遇到问题。
话虽这么说,如果您使用 -f 标志导入转储,它应该可以解决您的问题,因为“创建 View ”会引发错误,但该 View 仍应创建并在表就位后正常工作.
例子:
mysql -f -u UserName -p < dump.sql
关于mysql - 以正确的顺序使用 mysqldump 转储 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2479552/