python - 从 mysqldump 备份执行相互依赖的 View

标签 python mysql database scripting mysqldump

mysqldump 使用按字母顺序列出的表(和 View )创建转储。当表之间存在外键关系时,这不是很方便,但是,通过运行可以轻松解决问题:

SET FOREIGN_KEY_CHECKS=0;

我有一种情况,例如, View vwapple 依赖于 View vworange。使用 mysqldump,vwapple 在 vworange 之前列出并执行,这是有问题的,因为我们会收到“ View vworange 不存在”错误消息。

这种情况如何解决? View 是否具有与表类似的解决方案?还是让每个 View 独立来解决这个问题更好?

注意
我正在使用 python 脚本恢复数据库。每个 View 和表都在其单独的 .sql 文件中,因为我想独立地对每个数据库对象进行源代码控制。

最佳答案

mysqldump 的最新版本,当转储整个数据库时,以这种方式解决问题:对于数据库中的每个 View ,它们首先创建一个具有相同结构的空表,然后创建 View ,删除创建 View 之前的每个占位符表。似乎用 View 替换表不会损害依赖于它的 View 。

我知道这个是因为这个方法有另一个 flaw ,这让我很苦恼: View 中的行可能包含比表中的行更多的数据,因此无法创建某些占位符表,导致某些转储无法在没有手动干预的情况下恢复。出于这个原因, View 的拓扑排序会更好,尽管它可能需要一些工作。

关于python - 从 mysqldump 备份执行相互依赖的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596423/

相关文章:

python - Pandas python 用字符串替换空行

select 查询的 mysql 隔离级别(插入可见性)

database - 一个关系可以有不同长度的候选键吗?

python - 如何使用 Python 对 Spark 中的 LIBSVM 文件进行特征选择和缩减?

Python:从类内部访问静态类变量

MySQL 将分钟转换为秒

java - 将新列添加到表中,列名称为当前日期

mysql - 每个客户的数据库表或带有链接表的数据库设计?

python - 打印 groupby 对象的内容

mysql - 如何在mysql中获取列值小于之前日期的记录