[VPS] 五年主機升級資料庫後發生了什麼事

前陣子感覺這台主機應該要升級一下,先從資料庫開始。(自討苦吃的開始)

mysqldump --all-databases > dump.sql 一行指令先將所有資料庫打包。中間碰到不少早已不存在的破碎檔案阻礙匯出(Wordfence 有雷!)。障礙排除後就大膽把資料庫給重新編譯安裝。

以為可以一路順遂升級到 MySQL 5.7 結果裝好後才發現匯入資料庫時碰到使用者架構有改,沒匯入進去。資料庫還有部分沒匯入完整!!(暈)

想說認命一個一個還原回去,結果「又」碰到 datetime 類型預設值被限制不得為「0」,查看 sql_mode show variables like 'sql_mode'; 發現這兩個參數 NO_ZERO_IN_DATE, NO_ZERO_DATE 作怪。

參考此篇文章: ubuntu 16.04系统wordpress-4.9.4修改表引擎报告错误“Invalid default value for ‘comment_date’” 來解資料庫的限制(我使用 set session 臨時修改作法)

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

然後回去面對那一大包資料庫,把沒匯入完整的資料庫片段用 sed 指令抽出:

sed -i.bak -e '1,1000d;2000,3000d' dump.sql

指令的意思是:把 dump.sql 檔案中 1~1000行與2000~3000行刪除,留下1001~1999這段後,把 dump.sql 原始檔案備份為 dump.sql.bak

重複上述抽取資料庫手法把網站逐一還原,凌晨十二點搞到快四點,客戶早上醒來又是一個新的美好一天呢!

俗話說,好奇心會殺死一隻貓,我還認為熱血也會害死一個工程師阿,可惜報價上沒有一筆「工程師健康維護費」XD

有很多世界和平都需要這樣背後默默努力的角色,或許是我喜歡這樣隱藏角色的不俗感而驅使自己努力學習吧(自以為)

最後衷心提醒:如果你對正在使用的技術不熟,隨意更新會讓你有機會更熟!(逃)

#WordPress #MySQL #comment_date #資料庫升級 #技術相關

- Powered by Mxp.TW -FB2WP-

Facebook 外掛整合


Share: