問題描述
我將 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。