Starten Sie das 4.2 utf8mb4-Datenbank-Upgrade neu

14

Ich habe WP auf 4.2 aktualisiert, während es sich auf einem alten Server befand, der nicht den Upgrade-Anforderungen für utf8mb4 entspricht .

Ich bin auf einen anderen Server umgezogen, der diesen Anforderungen entspricht, aber WP startet dieses Datenbank-Upgrade nicht mehr: /wp-admin/upgrade.php sagt Your WordPress database is already up-to-date. Ich habe versucht, meine wp_postTabelle manuell auf utf8mb4 einzustellen, aber alle meine Sonderzeichen wurden zu " ".

Gibt es eine Möglichkeit, den Start maybe_convert_table_to_utf8mb4in einem einfachen Upgrade zu erzwingen , ohne all meine Sonderzeichen zu verlieren?

Vielen Dank!

Joan
quelle

Antworten:

5

Ich denke, die Antwort auf Ihre Frage ist "Nein".

Es gibt keine einfache Möglichkeit, maybe_convert_table_to_utf8mb4Websites auszulösen , die bereits nach WP 4.3 auf einem Server aktualisiert wurden, der die in diesem Beitrag festgelegten Anforderungen nicht erfüllt:

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

Wenn man sich den WP-Quellcode ansieht, sieht es so aus, als hätten sie diesen von 4.2s Update-Sequenz auf 4.3 verschoben (es ist in 4.2 nicht mehr vorhanden, da es jetzt überhaupt keine Upgrades mehr gibt) und hoffen, dass mehr Benutzer an Bord kommen.

Das ist also deine Antwort und es ist scheiße, aber genauer als die anderen ¯_ (ツ) _ / ¯

Wir arbeiten derzeit an einem einfachen Skript, mit dem Sie die Grundzüge der Upgrade-Sequenz basierend auf einem Aktions-Hook auslösen können. Wenn wir es stabil und funktionsfähig machen können, versuchen wir, es hier weiterzugeben, damit andere es verwenden können.

Unser grundlegender Plan ist es, den eigentlichen Datenbank-Teil von zu extrahieren upgrade_430(), ihn vom Datenbank-Aktualisierungssystem zu isolieren und ihn manuell auszulösen.

EDIT: LÖSUNG UNTEN

Es gibt zwar keine einfache Möglichkeit, das Skript auszulösen, aber hier ist eine handcodierte Problemumgehung, die auf upgrade_430()einem Drop-In basiert, jedoch als solches konzipiert ist.

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

Sie können dies in ein Plugin einfügen oder es einfach in Ihre functions.php einfügen. In jedem Fall sollte es vorübergehend sein.

Es ist so eingestellt, dass es automatisch bei Ihrem Besuch ausgelöst wird https://yoursite.com/?update-utf8bm4=1

Dies stellt sicher, dass es nur ein einziges Mal ausgeführt wird und Sie wählen können, wann (bei großen Datenbanken kann es eine Weile dauern und Sie möchten nicht, dass jemand einen Beitrag bearbeitet, während er ausgeführt wird).

Wenn Sie den GET-Trigger nicht haben möchten, entfernen Sie einfach das add_actionTeil und das if (!isset($_GET['update-utf8bm4']))Teil.

Nochmals: ENTFERNEN SIE DIESES, WENN ES VOLLSTÄNDIG IST, möchten Sie keinen GET-Trigger wie diesen herumliegen lassen :)

Jerclarke
quelle
2

Wenn es selbstverständlich ist, sollten Sie eine Sicherungskopie der Datenbank erstellen, bevor Sie etwas ausprobieren, aber Sie würden mit der Originalversion der Datenbank arbeiten. Ich würde zwei Dinge ausprobieren: Reparatur und Wartung der WordPress-Datenbank und Optimierungstabellen von phpMyAdmin:

Dies kam von dieser Seite, die viele Informationen aus der WP Knowledgebase enthält , aber Sie beginnen, indem Sie diese Zeile zur wp-config.php Ihrer Site hinzufügen:

define('WP_ALLOW_REPAIR', true);

Gehen Sie dann zu http://yoursite.com/wp-admin/maint/repair.php

Es sollte eine Seite mit zwei Optionen angezeigt werden: "Datenbank reparieren" und "Datenbank reparieren und optimieren".

Klicken Sie auf "Datenbank reparieren und optimieren" und geben Sie dem Skript Zeit zum Ausführen. Sobald sie erfolgreich ausgeführt wurden, erhalten Sie Aktualisierungsnachrichten, in denen Sie über den Status verschiedener Tabellen informiert werden.

Sobald es ausgeführt wurde, sehr wichtig , entfernen Sie die gerade zu wp-config.php hinzugefügte Zeile wp_allow_repair und löschen Sie sie aus der Datei wp-config.php.

Wenn das nicht funktioniert, können Sie die Tabellenoptimierung von phpMyAdmin ausprobieren, aber wenn WordPress nicht geholfen hat, ist dies möglicherweise auch nicht der Fall. Ich würde es mit derselben Version der Datenbank versuchen, auf der Sie die letzte Reparatur ausgeführt haben.

Rufen Sie phpMyAdmin auf, wählen Sie Ihre Datenbank aus, scrollen Sie zum Ende der Seite, markieren Sie "Check All", um alle Tabellen in der Datenbank auszuwählen, und wählen Sie dann "Optimize Table" aus dem Auswahlmenü. Das war's, es startet automatisch.

Hier gibt es mehr Details und Screenshots: WPMUDev

Wenn diese beiden Schritte alleine oder zusammen nicht funktionieren, können Sie versuchen, eine andere Kopie Ihrer Sicherungsdatenbank zu verwenden, um sie in umgekehrter Reihenfolge auszuführen ... Viel Glück!

Vanessa King
quelle
1
Führt "Datenbank reparieren und optimieren" aus Neustart maybe_convert_table_to_utf8mb4(wie bei jedem WP-Update)? Das hast du in der Antwort nicht erwähnt;)
Joan
Hallo Joan, entschuldigen Sie das Versehen. Ich habe keine spezielle Erwähnung in den Notizen gesehen, nein, aber ich würde raten, dass es möglich wäre, solange Sie die Optimierung in WordPress 4.2 oder höher ausgeführt haben. Aus den Kernbemerkungen
Vanessa King
Hatte alle UTF8-Tabellen und führte die Reparatur und Optimierung durch. Hat sie nicht in utf8mb4 konvertiert. Auch Tabellen, die nicht MyIsam, sondern InnoDB und bereits utf8mb4 waren, wurden nicht repariert oder optimiert.
rhand
Ja, das ist keine Antwort auf die Frage, sorry.
Jerclarke
0

Haben Sie versucht, die Sortierung der Datenbanktabelle zu ändern? Bitte versuchen Sie dies:

Melden Sie sich bei phpmyadmin an, wählen Sie Ihre Datenbank aus, und klicken Sie auf "Operations". Ändern Sie nun die Sortierung von in "utf8mb4_unicode_ci" oder ändern Sie die auf Ihrem alten Server verwendete Sortierung.

Ich hoffe es wird für dich funktionieren.

Siehe Screenshot: http://prntscr.com/8ip1ro/direct

Denken Sie daran: Wenn Sie eine SQL-Datei von Ihrem alten Server auf Ihren PC exportieren und mit einem beliebigen Texteditor öffnen ... und anpassen und speichern ... dann überprüfen Sie bitte, wann Sie die SQL-Datei speichern. Der Texteditor "Encoding" ist Utf-8 . Siehe meinen Screenshot: http://prntscr.com/8ip2nr/direct

Vielen Dank

NoDiv_NoClass
quelle
Dies ist, was ich (auch) versucht habe, als ob ich die Funktion gestartet hätte, dieselben Ergebnisse ( überall). Auf der Suche nach einer Möglichkeit, die WP-Funktion einfach neu zu starten…
Joan