Відновіть оновлення 4.2 utf8mb4 бази даних


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, яка зараз зовсім не має оновлень), можливо, сподіваючись залучити більше користувачів.

Отже, це ваша відповідь, і це відстійно, але є більш точним, ніж інші ¯_ (ツ) _ / ¯

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

Наш основний план - витягнути фактичну частину db upgrade_430(), ізолювати її від системи оновлення db та запустити її вручну.

РЕДАКТУЙТЕ: РІШЕННЯ РОЗВ'ЯЗУ

Хоча не існує простого способу запустити скрипт, ось ручне кодування рішення, засноване на, upgrade_430()але розроблене як спадне меню.

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

Ви можете помістити це у плагін або просто вставити його у свою функцію.php. У будь-якому випадку це повинно бути НАВЧАЛЬНО.

Він налаштований для автоматичного запуску під час відвідування https://yoursite.com/?update-utf8bm4=1

Це гарантує, що воно працює лише один раз, і ви можете вибрати, коли (для великих баз даних це може зайняти деякий час, і ви не хочете, щоб хтось редагував публікацію, поки це відбувається).

Якщо ви не хочете мати тригер GET, просто видаліть add_actionчастину та if (!isset($_GET['update-utf8bm4']))деталь.

Знову ж таки: ЗАБЕЗПЕЧИТИ ЦЕ КОЛИ ЗАВЕРШЕННЯ, ви не хочете залишати такий тригер, як цей лежить навколо :)


2

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

Це з’явилося з цієї сторінки, на якій є багато інформації WP Knowledgebase , але ви починаєте з додавання цього рядка до 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

Так, це не відповідь на запитання.
jerclarke

0

Ви намагалися змінити таблицю бази даних Collation? Спробуйте:

Увійдіть до phpmyadmin> виберіть базу даних> Операції> тепер змініть Collation зі спадного меню на "utf8mb4_unicode_ci" або змініть те, що було використано на вашому старому сервері.

Сподіваюся, це спрацює для вас.

див. знімок екрана: http://prntscr.com/8ip1ro/direct

Пам’ятайте: Якщо ви експортуєте файл sql зі свого старого сервера на ПК та відкриваєте його будь-яким текстовим редактором… та налаштовуєте та зберігаєте .. тоді перевірте, коли ви зберігаєте файл sql Текстовим редактором „Кодування” є Utf-8 .. дивіться мій знімок: http://prntscr.com/8ip2nr/direct

Дякую


Це те, що я намагався (теж) так, ніби запускав функцію, однакові результати ( скрізь). Шукаєте спосіб легко запустити функцію WP…
Джоан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.