問題描述
我將 WP 更新到 4.2,而舊的伺服器與 utf8mb4 upgrade requirements 不匹配。
我移動到符合這些要求的另一臺伺服器,但 WP 將不再啟動此資料庫升級:/wp-admin/upgrade.php 說 Your WordPress database is already up-to-date 。我試圖將我的 wp_post 表手動設定為 utf8mb4,但所有我的特殊字元都成為 「�」 。
任何方式強制啟動 maybe_convert_table_to_utf8mb4 在一個簡單的升級,而不會丟失所有我的特殊字元?
謝謝!
最佳解決方案
我認為你現在的答案是”No” 。
一旦伺服器上已經升級到 WP 4.3 以外的網站,觸發 maybe_convert_table_to_utf8mb4 的方法並不容易,該伺服器不符合本文的要求:
https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/
請注意,基於 WP 原始碼,似乎將其從 4.2 的更新順序轉移到 4.3(4.2 中已不存在,現在沒有升級),也許希望能夠獲得更多的使用者。
所以這是你的答案,它吸吮,但比其他人更準確¯_(ツ)_ /¯
我們目前正在製作一個簡單的指令碼,使您可以根據操作鉤子觸發升級順序的本質。如果我們能夠穩定工作,我們會嘗試回來分享一下,供別人使用。
我們的基本計劃是提取 upgrade_430()的實際資料庫部分,將其與資料庫更新系統隔離,並手動觸發。
編輯:下面的解決方案
雖然沒有簡單的方法觸發指令碼,這是一個 hand-coded 解決方法,基於 upgrade_430(),但設計為一個 drop-in 。
https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc
你可以把它放在一個外掛中,或者把它貼上到你的 functions.php 中。不管怎樣,它應該是臨時的。
它設定為在您訪問 https://yoursite.com/?update-utf8bm4=1 時自動觸發
這確保它只執行一次,並且您可以選擇何時 (對於大型資料庫可能需要一段時間,並且您不想讓任何人在發生事件時編輯文章) 。
如果您不希望 GET 觸發器只是刪除 add_action 部件和 if (!isset($_GET['update-utf8bm4']))部件。
再次:完全刪除,你不想離開像這樣的 GET 觸發:)
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。