Перезапустить обновление базы данных utf8mb4 4.2

14

Я обновил WP до 4.2, пока он был на старом сервере, который не соответствует требованиям для обновления utf8mb4 .

Я перешел на другой сервер, который отвечает этим требованиям, но WP больше не будет запускать это обновление базы данных: /wp-admin/upgrade.php Your WordPress database is already up-to-date. Я попытался wp_postвручную установить в таблице utf8mb4, но все мои специальные символы стали « ».

Любой способ заставить запуск maybe_convert_table_to_utf8mb4в простом обновлении, не теряя все мои специальные символы?

Благодарность!

Джоан
источник

Ответы:

5

Я думаю, что ответ на ваш вопрос сейчас "Нет".

Нет простого способа запуска maybe_convert_table_to_utf8mb4на сайтах, если они уже были обновлены после WP 4.3 на сервере, который не отвечал требованиям, изложенным в этом посте:

https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/

Обратите внимание, что, основываясь на исходном коде WP, кажется, что они перенесли это из последовательности обновлений 4.2 в 4.3 (она больше не присутствует в 4.2, которая теперь вообще не имеет обновлений), возможно, надеясь привлечь больше пользователей на борт.

Так что это ваш ответ, и это отстой, но он более точен, чем остальные ¯_ (ツ) _ / ¯

В настоящее время мы работаем над созданием простого сценария, который позволит вам запустить суть последовательности обновления на основе ловушки действий. Если мы сможем сделать его стабильным и работающим, мы постараемся вернуться и поделиться им здесь, чтобы другие могли его использовать.

Наш основной план состоит в том, чтобы извлечь фактическую часть базы данных upgrade_430(), изолировать ее от системы обновления базы данных и запустить ее вручную.

РЕДАКТИРОВАТЬ: РЕШЕНИЕ НИЖЕ

Хотя нет простого способа запуска сценария, здесь есть ручной обходной путь, основанный на использовании, upgrade_430()но выполненный в виде вставки.

https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc

Вы можете поместить это в плагин или просто вставить в файл functions.php. В любом случае это должно быть ВРЕМЕННО.

Он настроен на автоматический запуск при посещении https://yoursite.com/?update-utf8bm4=1

Это гарантирует, что он запускается только один раз, и вы можете выбрать, когда (для больших баз данных это может занять некоторое время, и вы не хотите, чтобы кто-либо редактировал сообщение, пока оно происходит).

Если вы не хотите использовать триггер GET, просто удалите add_actionдеталь и if (!isset($_GET['update-utf8bm4']))деталь.

Опять же: УДАЛИТЕ ЭТО, КОГДА ЗАВЕРШИТЕ, вы не хотите оставлять триггер GET как этот, лежащий вокруг :)

jerclarke
источник
2

Конечно, если само собой разумеется, сделайте резервную копию базы данных, прежде чем пытаться что-либо делать, но вы бы работали с исходной версией базы данных - я бы попробовал две вещи: восстановление и обслуживание базы данных WordPress и таблицы оптимизации phpMyAdmin:

Это пришло с этой страницы, на которой есть много информационной базы знаний WP , но вы начнете с добавления этой строки в wp-config.php вашего сайта:

define('WP_ALLOW_REPAIR', true);

затем перейдите на http://yoursite.com/wp-admin/maint/repair.php

Вы должны увидеть страницу с двумя вариантами: «Восстановить базу данных» и «Восстановить и оптимизировать базу данных».

Нажмите «Восстановить и оптимизировать базу данных» и дайте сценарию время для запуска. После того, как они успешно запустятся, вы получите сообщения об обновлениях, сообщающие вам о состоянии различных таблиц.

Как только он запустится, очень важно , удалить строку wp_allow_repair, которую вы только что добавили в wp-config.php, удалите ее из файла wp-config.php.

Если это не сработает, вы можете попробовать оптимизацию таблиц phpMyAdmin, но если WordPress не помог, это тоже может не сработать. Я попробовал бы это на той же версии базы данных, на которой вы выполняли последнее восстановление.

Зайдите в phpMyAdmin, выберите свою базу данных, прокрутите страницу вниз, выберите «Отметить все», чтобы выбрать все таблицы в базе данных, затем выберите «Оптимизировать таблицу» в меню выбора рядом с ней. Вот и все, это начнется автоматически.

Вот более подробно и скриншоты: WPMUDev

Если эти два шага не работают - один или вместе - вы можете попробовать использовать другую копию вашей резервной базы данных, чтобы запустить их в обратном порядке ... Удачи!

Ванесса Кинг
источник
1
Делает 'Ремонт и оптимизация базы данных.' перезапустить maybe_convert_table_to_utf8mb4(как и любое обновление WP)? Вы не упомянули об этом в ответе;)
Джоан
Привет, Джоан, извини за упущение ... Я не видел никакого конкретного упоминания об этом в примечаниях, нет, но предположил бы, что это произойдет, если можно, пока вы выполняете оптимизацию в WordPress 4.2+. Из основных заметок: [ make.wordpress.org/core/tag/wpdb/]
Ванесса Кинг
Были все таблицы UTF8 и проводились ремонт и оптимизация. Не конвертировал их в utf8mb4. Также таблицы, которые не были MyIsam, но InnoDB и уже utf8mb4, не были восстановлены или оптимизированы.
rhand
Да, это не ответ на вопрос, извините.
Джеркларке
0

Вы пытались изменить таблицу базы данных Collation? Пожалуйста, попробуйте это:

Войдите в phpmyadmin> выберите вашу базу данных> Операции>, теперь измените Collation с выпадающего на utf8mb4_unicode_ci или измените на то, что использовалось на вашем старом сервере.

Я надеюсь, что это будет работать для вас.

посмотреть скриншот: http://prntscr.com/8ip1ro/direct

Помните: если вы экспортируете файл sql со своего старого сервера на свой компьютер и открываете его в любом текстовом редакторе ... и настраиваете и сохраняете ..., то, пожалуйста, проверьте при сохранении файла sql текстовый редактор "Кодировка" - Utf-8 .. смотрите мой скриншот: http://prntscr.com/8ip2nr/direct

Благодарность

NoDiv_NoClass
источник
Это то, что я пытался (тоже), как будто я запускал функцию, те же результаты ( везде). Ищете способ легко перезапустить функцию WP…
Джоан,