Drupal views報錯解決: Notice: unserialize ,utf8mb4 編碼資料庫備份還原慘痛教訓

 先說明原由,我在備份還原資料庫之後,發生一直有views相關報錯的問題,內容大致上是"Notice: unserialize xxx"一串很固定的內容,瀏覽任何頁面都會出現,接著就發現網頁上有 Emoji的內容都不見了,眼看真的慘了,很顯然的是我mysqldump出來的內容定義編碼沒定義好,即使用拿之前每天備份的內容在倒回去資料庫也沒用,只好先暫時把報錯先關掉

後來還是不死心,看能不能把報錯的問題解決掉

弄了很多方式,弄一個測試站,把所有的node砍掉,結果沒用,問題不是node的內容
然後又接著測試把所有的模組關掉,很顯然的就是把views關掉就沒不會再報錯

於是就朝著這個方向處理,然後在這篇找到曙光https://drupal.stackexchange.com/questions/82858/notice-unserialize-function-unserialize-error-at-offset-10301-of-11637-by

我在測試站把views做出來的內容一個一個砍掉,再砍掉某個內容時發現沒有再報錯了,總算找到報錯的兇手!

解決方法:把views匯出(copy),刪掉,再匯入,一個一個弄,弄到不會再報錯,就表示解決了;不過Emoji的內容就真的消失了,變成怪怪的符號,不過也沒差,反正Emoji的內容也不多

至於 utf8mb4 編碼資料庫備份還原慘痛教訓! 就是以後要記得寫入 my.cnf,把 utf8mb4 弄成預設

~/.my.cnf

[client]
password = pwd

[client]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

我有實測過,有定義utf8mb4再資料庫的備份還原,可以看到Emoji的內容,同時也沒有報錯的情況發生

日後也要記得,如果在新的伺服器環境,備份的內容也要定期還原再檢查內容有沒有問題

留言

熱門文章