使用mysql恢復數據時視圖變成表

問題是這樣的,使用mysqldump備份線上數據庫之後,然後通過mysql 命令行恢復到線下數據庫,發現視圖都成了表。
爲什麼會這樣呢?這就得聊聊mysql備份恢復的機制了
其實查看mysqldump備份產生的sql語句,會發現視圖首先會恢復成表,之後再刪除表,新建視圖。

如下圖,可以看到在15572行先創建了v_t_borrow_details表,然後在21322行創建了v_t_borrow_details視圖
使用mysql恢復數據時視圖變成表

這樣是爲了避免依賴關係,比如有2個 VIEW: v_a, v_b
v_a 引用 v_b
如果先建 v_a ,那麼它引用的 v_b 還沒有創建,是建不成功的,而先把所有的 view 都弄成表先建一次,表是沒有依賴的,都會創建成功,然後再逐個刪除 view 和創建 view,這時候引用的東東都是以表或 view 的形式存在了,不會因爲依賴的對象出問題。
而之所以視圖會變成表了,那是因爲在恢復過程中出錯導致了恢復中斷,後面的語句都skipping了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章