Ich habe eine WordPress-Datenbank auf meinem lokalen Computer, die ich auf ein gehostetes phpMyAdmin auf cPanel übertragen möchte. Wenn ich jedoch versuche, die Datenbank in die Umgebung zu importieren, wird immer wieder der folgende Fehler angezeigt:
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
Ich habe versucht, Google zu durchsuchen, und die einzige Lösung, die ich finden kann, ist dieser eine phpmysql-Fehler - # 1273 - # 1273 - Unbekannte Sortierung: 'utf8mb4_general_ci', was derzeit keine große Hilfe ist. Ich habe versucht, die Cookies zu löschen, aber es funktioniert immer noch nicht. Bitte helfen Sie!
mysql
wordpress
phpmyadmin
cpanel
Wairimu Murigi
quelle
quelle
Antworten:
Ich hatte das gleiche Problem, da auf allen unseren Servern ältere Versionen von MySQL ausgeführt werden. Dies kann durch Ausführen eines PHP-Skripts gelöst werden. Speichern Sie diesen Code in einer Datei und führen Sie ihn unter Eingabe des Datenbanknamens, des Benutzers und des Kennworts aus. Dadurch wird die Sortierung von
utf8mb4/utf8mb4_unicode_ci
in geändertutf8/utf8_general_ci
quelle
mysqldump --compatible=mysql4
db-convert.php
mysqldump --compatible=mysql4
oder die Antwort unten ist eine bessere Option. Ich halte es nicht für eine kluge Idee, so etwas auf einer Live-Site zu ändern. Besser im richtigen Format exportieren oder, falls dies keine Option ist, die exportierte Datei bearbeiten.Die Technik in diesem Beitrag hat bei mir funktioniert
1) Klicken Sie auf die Registerkarte "Exportieren" für die Datenbank
2) Klicken Sie auf das Optionsfeld "Benutzerdefiniert"
3) Gehen Sie zum Abschnitt "Formatspezifische Optionen" und ändern Sie die Dropdown-Liste für "Datenbanksystem oder älterer MySQL-Server, um die Ausgabekompatibilität mit:" von NONE auf MYSQL40 zu maximieren.
4) Scrollen Sie nach unten und klicken Sie auf "GO".
Ich bin mir nicht sicher, ob dies zu Datenverlust führt, aber als ich es einmal ausprobiert habe, habe ich keinen bemerkt. Auch niemand, der in den oben verlinkten Foren geantwortet hat.
Bearbeiten 8/12/16 - Ich glaube, dass das Exportieren einer Datenbank auf diese Weise dazu führt, dass ich Daten verliere, die in den Widgets von Black Studio TinyMCE Visual Editor gespeichert sind , obwohl ich nicht mehrere Tests zur Bestätigung ausgeführt habe.
quelle
Wenn Sie bereits eine
.sql
Datei exportiert haben, suchen und ersetzen Sie am besten Folgendes, wenn Sie sie in Ihrer Datei haben:utf8mb4_0900_ai_ci
zuutf8_unicode_ci
utf8mb4
zuutf8
utf8_unicode_520_ci
zuutf8_unicode_ci
Es wird ersetzen
utf8mb4_unicode_ci
zuutf8_unicode_ci
. Jetzt gehen Sie zu Ihrem phpMyAdmin cPanel und setzen die DB-Sortierungutf8_unicode_ci
über Operations> Collation auf .Wenn Sie nach a exportieren,
.sql
ist es besser, das Format für den Export der Datei zu ändern. Schauen Sie sich Evsters Antwort an (sie befindet sich auf derselben Seite wie diese).quelle
sed -i.bak s/utf8mb4/utf8/g FILE_NAME
. Dadurch werden alle Vorkommenutf8mb4
in FILE_NAME gefunden und durch ersetzt,utf8
während eine Kopie der Originaldatei in FILE_NAME.bak gespeichert wird. Möglicherweise müssen Sie es optimieren, um die genaue Koalition in Ihrem Fall anzugeben, aber dies ist ein Anfang :)vi dump.sql
und dann in via mach das ::%s/uf8mb4/utf8/g
.utf8_0900_ai_ci
durchutf8_unicode_ci
Ich benutze dies unter Linux:
Stellen Sie dann your_file.sql wieder her
quelle
sed -i '' ....
.sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
Wordpress 4.2 hat aus Sicherheitsgründen die Unterstützung für die Zeichencodierung "utf8mb4" eingeführt , jedoch nur von MySQL 5.5.3 und höher. Das Installationsprogramm (und der Updater) überprüfen dies so, dass es Ihre MySQL-Version überprüft und Ihre Datenbank nur dann auf utfmb4 aktualisiert wird, wenn dies unterstützt wird .
Das klingt theoretisch großartig, aber das Problem (wie Sie festgestellt haben) besteht darin, dass Sie Datenbanken von einem MySQL-Server, der utf8mb4 unterstützt, auf einen Server migrieren, der dies nicht tut. Während der umgekehrte Fall funktionieren sollte, handelt es sich im Grunde genommen um eine Einwegoperation.
Wie von Evster hervorgehoben, könnten Sie mit der "Export" -Funktion von PHPMYAdmin erfolgreich sein. Verwenden Sie " Exportmethode: Benutzerdefiniert " und für das " Datenbanksystem oder einen älteren MySQL-Server, um die Ausgabekompatibilität zu maximieren mit: " Dropdown-Liste " MYSQL 40 ".
Für einen Befehlszeilenexport mit mysqldump. Schauen Sie sich die Flagge an:
Hinweis: Wenn die Datenbank 4-Byte-Zeichen enthält, werden diese beschädigt.
Für alle, die das beliebte WP Migrate DB PRO-Plugin verwenden, meldet ein Benutzer in diesem Wordpress.org-Thread , dass die Migration immer ordnungsgemäß durchgeführt wird, ich jedoch nichts offizielles finden konnte.
Derzeit scheint es keine Möglichkeit zu geben, die Datenbankaktualisierung zu deaktivieren. Wenn Sie also einen Workflow verwenden, in dem Sie eine Site von einem Server oder einem lokalen Host mit MySQL> 5.5.3 auf einen Site migrieren, der eine ältere MySQL-Version verwendet, haben Sie möglicherweise kein Glück.
quelle
TYPE=MyISAM
, das in Version 5.1 entfernt wurde. Führen Sie eine Suche durch und ersetzen Sie sie durchENGINE=MyISAM
. Mit denmysqldump
Ausgabeoptionen konnte ich keinen Weg finden, dies zu umgehen.In meinem Fall stellte sich heraus, dass mein
neuer Server lief
MySQL 5.5
, deralte Server lief
MySQL 5.6
.Beim Versuch, die
.sql
von meinem alten Server exportierte Datei zu importieren, trat diese Fehlermeldung auf .MySQL 5.5 unterstützt nicht
utf8mb4_unicode_520_ci
,MySQL 5.6 jedoch.
Durch das Aktualisieren
MySQL 5.6
auf den neuen Server wurde der Fehler behoben!Wenn Sie MySQL 5.5 beibehalten möchten, können Sie:
- eine Kopie Ihrer exportierten
.sql
Datei erstellen- Instanzen von
utf8mb4unicode520_ci
und ersetzenutf8mb4_unicode_520_ci
... durch
utf8mb4_unicode_ci
- Ihre aktualisierte
.sql
Datei importieren .quelle
mysql-server-5.6
Paket, das Sie installieren können, das 5.5 automatisch für Sie entfernt).In wp-config.php gibt es eine Zeile:
Wenn Sie den Anweisungen von Markouver / Evster folgen , vergessen Sie nicht, diese Zeile auf dem Produktionsserver in zu ändern
um defekte 4-Byte-Zeichen zu beheben
quelle
define('DB_COLLATE', 'utf8_general_ci');
. Das hat mir geholfen.Nach langer Recherche habe ich die Lösung für oben gefunden:
Zuerst ändern Sie die Standardeinstellung wp-config.php> Database DB_CHARSET in "utf8".
Klicken Sie auf die Registerkarte "Exportieren" für die Datenbank
Klicken Sie auf das Optionsfeld "Benutzerdefiniert"
Gehen Sie zum Abschnitt "Formatspezifische Optionen" und ändern Sie die Dropdown-Liste für "Datenbanksystem oder älterer MySQL-Server, um die Ausgabekompatibilität zu maximieren mit:" von NONE auf MYSQL40.
Scrollen Sie nach unten und klicken Sie auf Los
Dann bist du dran.
quelle
Ihr Host bietet anscheinend keine MySQL-Version, mit der Tabellen mit der Sortierung utf8mb4 ausgeführt werden können.
Die WordPress-Tabellen wurden mit Version 4.2 (veröffentlicht am 23. April 2015) in utf8mb4 geändert, um Emojis zu unterstützen. Sie benötigen jedoch MySQL 5.5.3, um es zu verwenden.5.5.3. ist ab März 2010, sollte also normalerweise allgemein verfügbar sein. Können Sie überprüfen, ob Ihr Hoster diese Version bereitstellt?
Wenn dies nicht der Fall ist und ein Upgrade nicht möglich ist, müssen Sie möglicherweise nach einem anderen Hoster Ausschau halten, um die neuesten WordPress-Versionen auszuführen (und dies sollten Sie aus Sicherheitsgründen immer tun).
quelle
Also habe ich auf diese Weise von MySQL 5.6 bis MySQL 5.5 gelöst:
(Optional) Erstellen Sie eine
.sql.gz
Datei:Erläuterung
Wie in dieser Antwort erläutert , entspricht dies nur den Optionen von phpMyAdmin: "Datenbanksystem oder älterer MySQL-Server zur Maximierung der Ausgabekompatibilität mit:" Dropdown-Auswahl "MYSQL 40" .
Wir brauchen dies, um dieses Problem zu lösen:
quelle
$ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
. Wenn Sie eine Kopie wiedatabase_name.sql.bak
vor dem sed behalten möchten, ersetzen Sie:$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
sed
.--compatible=ansi
OptionIch habe dieses Problem auch erlebt. Die Lösung, die für mich funktioniert hat, bestand darin, die lokale Datenbank mit Sequel Pro zu öffnen und die Codierung und Sortierung vor dem Import für jede Tabelle auf utf8 / utf8_bin zu aktualisieren .
quelle
Am einfachsten exportieren Sie Ihre Datenbank in
.sql
, öffnen sie in Notepad ++ und "Suchen und Ersetzen"utf8mb4_unicode_ci
inutf8_unicode_ci
und ersetzenutf8mb4
durchutf8
. Vergessen Sie auch nicht, die Datenbankkollatierung inutf8_unicode_ci
(Operationen> Kollatierung) zu ändern .quelle
Öffnen Sie die SQL-Datei in Notepad ++ und
ctrl + H.
setzen Sie "utf8mb4
" bei der Suche und "utf8
" beim Ersetzen. Das Problem wird dann behoben.quelle