Uruchom ponownie aktualizację bazy danych utf8mb4 4.2

14

Zaktualizowałem WP do wersji 4.2 na starym serwerze, który nie spełnia wymagań aktualizacji utf8mb4 .

Przeprowadziłem się na inny serwer, który spełnia te wymagania, ale WP nie uruchomi już tej aktualizacji bazy danych: /wp-admin/upgrade.php mówi Your WordPress database is already up-to-date. Próbowałem wp_postręcznie ustawić tabelę na utf8mb4, ale wszystkie moje znaki specjalne stały się „ ”.

W jakikolwiek sposób zmusić do uruchomienia maybe_convert_table_to_utf8mb4w prostej aktualizacji, bez utraty wszystkich moich specjalnych znaków?

Dzięki!

Joan
źródło

Odpowiedzi:

5

Myślę, że odpowiedź na twoje pytanie brzmi „nie”.

Nie ma łatwego sposobu na uruchomienie maybe_convert_table_to_utf8mb4w witrynach, które zostały już uaktualnione poza WP 4.3 na serwerze, który nie spełniał wymagań określonych w tym poście:

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

Zauważ, że patrząc na kod źródłowy WP, wygląda na to, że przenieśli go z sekwencji aktualizacji 4.2 do 4.3 (nie jest już obecny w 4.2, która nie ma żadnych aktualizacji), może licząc na to, że uda się zdobyć więcej użytkowników.

To jest twoja odpowiedź i jest do bani, ale jest dokładniejsza niż inne ¯_ (ツ) _ / ¯

Obecnie pracujemy nad stworzeniem prostego skryptu, który pozwala uruchomić istotę sekwencji aktualizacji na podstawie haka akcji. Jeśli uda nam się go ustabilizować i działać, postaramy się wrócić i udostępnić go tutaj, aby inni mogli z niego korzystać.

Naszym podstawowym planem jest wyodrębnienie rzeczywistej części db upgrade_430(), odizolowanie jej od systemu aktualizacji db i uruchomienie jej ręcznie.

EDYCJA: ROZWIĄZANIE PONIŻEJ

Chociaż nie ma łatwego sposobu na uruchomienie skryptu, oto ręcznie kodowane obejście oparte na, upgrade_430()ale zaprojektowane jako drop-in.

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

Możesz umieścić to we wtyczce lub po prostu wkleić w pliku functions.php. Tak czy inaczej, powinno to być TYMCZASOWE.

Jest skonfigurowany tak, aby uruchamiał się automatycznie podczas wizyty https://yoursite.com/?update-utf8bm4=1

Zapewnia to, że działa tylko raz i możesz wybrać, kiedy (w przypadku dużych baz danych może to potrwać chwilę i nie chcesz, aby ktokolwiek edytował post podczas jego działania).

Jeśli nie chcesz mieć wyzwalacza GET, po prostu usuń add_actionczęść i if (!isset($_GET['update-utf8bm4']))część.

Znowu: USUŃ TO, GDY ZAKOŃCZONO, nie chcesz pozostawiać takiego wyzwalacza GET leżącego w pobliżu :)

jerclarke
źródło
2

Oczywiście, jeśli to oczywiste, wykonaj kopię zapasową bazy danych przed wypróbowaniem czegokolwiek, ale będziesz pracować z oryginalną wersją bazy danych - spróbuję dwóch rzeczy: naprawy i konserwacji bazy danych WordPress oraz tabel optymalizacyjnych phpMyAdmin:

Pochodzi z tej strony, która zawiera wiele informacji WP Knowledgebase , ale zaczynasz od dodania tej linii do wp-config.php twojej witryny:

define('WP_ALLOW_REPAIR', true);

następnie przejdź do http://yoursite.com/wp-admin/maint/repair.php

Powinieneś zobaczyć stronę z dwiema opcjami: „Napraw bazę danych” i „Napraw i zoptymalizuj bazę danych”.

Kliknij „Napraw i zoptymalizuj bazę danych” i daj skryptowi czas na uruchomienie. Po pomyślnym uruchomieniu otrzymasz komunikaty o aktualizacjach informujące o stanie różnych tabel.

Jak tylko się uruchomi, bardzo ważne , usuń wiersz wp_allow_repair, który właśnie dodałeś do wp-config.php, usuń go z pliku wp-config.php.

Jeśli to nie zadziała, możesz spróbować zoptymalizować tabelę phpMyAdmina, ale jeśli WordPress nie pomógł, to też nie może. Wypróbowałbym to w tej samej wersji bazy danych, w której uruchomiono ostatnią naprawę.

Przejdź do phpMyAdmin, wybierz bazę danych, przewiń na dół strony, zaznacz „Zaznacz wszystko”, aby zaznaczyć wszystkie tabele w bazie danych, a następnie wybierz „Optymalizuj tabelę” z menu wyboru obok niej. To wszystko, rozpocznie się automatycznie.

Oto więcej szczegółów i zrzuty ekranu: WPMUDev

Jeśli te dwa kroki nie działają - samodzielnie lub razem - możesz spróbować użyć innej kopii zapasowej bazy danych, aby uruchomić je w odwrotnej kolejności ... Powodzenia!

Vanessa King
źródło
1
Czy „Napraw i zoptymalizuj bazę danych”. uruchomić ponownie maybe_convert_table_to_utf8mb4(jak każda aktualizacja WP)? Nie wspomniałeś o tym w odpowiedzi;)
Joan
Cześć Joan, przepraszam za niedopatrzenie… Nie widziałem żadnej konkretnej wzmianki o tym w notatkach, nie, ale zgaduję, że tak, jeśli można to zrobić, o ile prowadzisz optymalizację w WordPress 4.2+. Z podstawowych notatek: [ make.wordpress.org/core/tag/wpdb/]
Vanessa King
Miałem wszystkie tabele UTF8 i przeprowadziłem naprawę i optymalizację. Nie przekonwertowałem ich na utf8mb4. Również tabele, które nie były MyIsam, ale InnoDB i już utf8mb4 nie zostały naprawione ani zoptymalizowane.
rhand
Tak, to nie jest odpowiedź na pytanie przepraszam.
jerclarke
0

Czy próbowałeś zmienić sortowanie tabeli bazy danych? Spróbuj tego:

Zaloguj się do phpmyadmin> wybierz bazę danych> Operacje> teraz zmień Sortowanie z listy rozwijanej na „utf8mb4_unicode_ci” lub zmień na to, co było używane na starym serwerze.

Mam nadzieję, że ci się uda.

patrz zrzut ekranu: http://prntscr.com/8ip1ro/direct

Pamiętaj: jeśli eksportujesz plik sql ze starego serwera na komputer i otwierasz go za pomocą dowolnego edytora tekstów ... oraz dostosowujesz i zapisujesz ... to sprawdź, kiedy zapisujesz plik sql. Edytor tekstu "Kodowanie" to Utf-8 .. zobacz mój zrzut ekranu: http://prntscr.com/8ip2nr/direct

Dzięki

NoDiv_NoClass
źródło
Właśnie tego próbowałem (też), jakbym uruchamiał funkcję, te same wyniki ( wszędzie). Szukasz sposobu na łatwe ponowne uruchomienie funkcji WP…
Joan