使用mysql恢复数据时视图变成表 -九五小庞

** 问题是这样的,使用mysqldump备份线上数据库之后,然后通过mysql 命令行恢复到线下数据库,发现视图都成了表。 **
为什么会这样呢?这就得聊聊mysql备份恢复的机制了
其实查看mysqldump备份产生的sql语句,会发现视图首先会恢复成表,之后再删除表,新建视图。

如下图,可以看到在15572行先创建了v_t_borrow_details表,然后在21322行创建了v_t_borrow_details视图

 

 

这样是为了避免依赖关系,比如有2个 VIEW: v_a, v_b
v_a 引用 v_b
如果先建 v_a ,那么它引用的 v_b 还没有创建,是建不成功的,而先把所有的 view 都弄成表先建一次,表是没有依赖的,都会创建成功,然后再逐个删除 view 和创建 view,这时候引用的东东都是以表或 view 的形式存在了,不会因为依赖的对象出问题。
而之所以视图会变成表了,那是因为在恢复过程中出错导致了恢复中断,后面的语句都skipping了。


-----------------------------------
©著作权归作者所有:来自51CTO博客作者李永峰Billy的原创作品,请联系作者获取转载授权,否则将追究法律责任
使用mysql恢复数据时视图变成表
https://blog.51cto.com/billy98/2059406

posted @ 2021-12-23 09:54  九五小庞  阅读(247)  评论(0编辑  收藏  举报