mysqldump创建一个按字母顺序列出的表(和视图)的转储。当表之间存在外键关系时,这不是很方便,但是,可以通过运行以下命令轻松解决问题:
SET FOREIGN_KEY_CHECKS=0;
我有一种情况,视图,vwapple,依赖于视图,比如说,vwalange。在mysqldump中,vwapple在vwrange之前被列出并执行,这是有问题的,因为我们将得到一条“viewvwarange不存在”错误消息。
这种情况是如何解决的?视图是否具有与表类似的解决方案?还是让每一个视图独立起来以避免这个问题?
注意
我正在使用python脚本恢复数据库。每个视图和表都在其单独的.sql文件中,因为我想独立地对每个数据库对象进行源代码管理。在
在转储整个数据库时,
mysqldump
的最新版本是这样解决的:对于数据库中的每个视图,它们首先创建具有相同结构的空表,然后创建视图,在创建视图之前删除每个占位符表。用视图替换表似乎不会损害依赖它的视图。在我之所以知道这一点,是因为这种方法还有另一个flaw,它让我明白了:视图中的行可能比表中的行包含更多的数据,因此无法创建一些占位符表,从而导致一些转储在没有手动干预的情况下无法恢复。因此,视图的拓扑排序会更好,尽管这可能需要一些工作。在
相关问题 更多 >
编程相关推荐