MySQL备份和恢复视图

如果mysql备份在数据库中是视图时,我无法正常运行。 我认为这可能与需要占位符对象有关。 无论如何我运行这个命令:

mysqldump -u myuser -pmypassword mydatabase | mysql -u myuser -pmypassword -C mydatabase_Beta 

用户有完整的权限,我得到这个:

查看mydatabase_beta.yadayada引用无效的表或列或函数或定义者/调用者或查看缺乏使用它们的权利。

我如何备份,以便它恢复所有我的数据库正确?

在这个例子中,我将其恢复到一个不同的名称,但我需要能够恢复工作副本。 我认为这可能是一个额外的mysqldump参数,也许热复制会更好。 思考?

先尝试两个步骤:

 mysqldump -uroot -ppassword --skip-extended-insert database.sql > database.sql 

所以它备份到一个文件,然后pipe到第二个命令:

 mysql -u myuser -pmypassword -C mydatabase_Beta < database.sql 

如果引用错误在mysqldump步骤中,请修复视图或将其从数据库中删除。 如果他们引用一个不存在的表格,我无法进行映像处理。

我想答案可能是添加-f

 --force, -f Continue even if an SQL error occurs during a table dump. 

此选项的一个用途是使mysqldump继续执行,即使它遇到无效的视图,因为定义引用了已经被删除的表。 没有--force ,mysqldump退出并显示错误信息。 使用--force ,mysqldump打印错误消息,但是它也将包含视图定义的SQL注释写入转储输出并继续执行。

在这里黑暗中射击,但我不认为你在这个声明的后半部分需要-C 。 根据我的mysql的副本-C定义使用的configuration文件path。