1. 程式人生 > >使用mysql恢復數據時視圖變成表

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

blog ping 圖片 watermark view 2個 str shadow sha

問題是這樣的,使用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了。

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