it-swarm.com.de

# 1273 - Unbekannte Sortierung: 'utf8mb4_unicode_ci' Cpanel

Ich habe auf meinem lokalen Rechner eine Wordpress-Datenbank, die ich auf ein gehostetes phpMyAdmin auf Cpanel übertragen möchte. Wenn ich jedoch versuche, die Datenbank in die Umgebung zu importieren, erhalte ich diesen Fehler immer wieder

#1273 - Unknown collation: 'utf8mb4_unicode_ci' 

Ich habe versucht zu googeln und die einzige Lösung, die ich finden kann, ist dieser phpmysql-Fehler - # 1273 - # 1273 - Unbekannte Kollatierung: 'utf8mb4_general_ci' , was jetzt nicht viel hilft. Ich habe versucht, die Cookies zu löschen, aber es funktioniert immer noch nicht. Bitte helfen

154
Wairimu Murigi

Ich hatte das gleiche Problem, da auf allen unseren Servern ältere Versionen von MySQL ausgeführt wurden. Dies kann durch Ausführen eines PHP - Skripts gelöst werden. Speichern Sie diesen Code in einer Datei und führen Sie ihn aus. Geben Sie dabei den Datenbanknamen, den Benutzer und das Kennwort ein. Dadurch wird die Sortierung von utf8mb4/utf8mb4_unicode_ci in utf8/utf8_general_ci geändert.

<!DOCTYPE html>
<html>
<head>
  <title>DB-Convert</title>
  <style>
    body { font-family:"Courier New", Courier, monospace; }
  </style>
</head>
<body>

<h1>Convert your Database to utf8_general_ci!</h1>

<form action="db-convert.php" method="post">
  dbname: <input type="text" name="dbname"><br>
  dbuser: <input type="text" name="dbuser"><br>
  dbpass: <input type="text" name="dbpassword"><br>
  <input type="submit">
</form>

</body>
</html>
<?php
if ($_POST) {
  $dbname = $_POST['dbname'];
  $dbuser = $_POST['dbuser'];
  $dbpassword = $_POST['dbpassword'];

  $con = mysql_connect('localhost',$dbuser,$dbpassword);
  if(!$con) { echo "Cannot connect to the database ";die();}
  mysql_select_db($dbname);
  $result=mysql_query('show tables');
  while($tables = mysql_fetch_array($result)) {
          foreach ($tables as $key => $value) {
           mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
     }}
  echo "<script>alert('The collation of your database has been successfully changed!');</script>";
}

?>
100
Stephen

Die Technik in diesem Beitrag hat für mich funktioniert

1) Klicken Sie auf die Registerkarte "Export" 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 älteren MySQL-Server", um die Ausgabekompatibilität mit: "von NONE zu MYSQL40 zu maximieren.

4) Scrollen Sie nach unten und klicken Sie auf "GO".

Ich bin nicht sicher, ob dies zu Datenverlust führt. In dem Fall, in dem ich es einmal versucht habe, habe ich keinen bemerkt. Weder tat es jemand, der in den oben genannten Foren geantwortet hat.

Edit 8/12/16 - Der Export einer Datenbank auf diese Weise führt dazu, dass ich die in Black Studio TinyMCE Visual Editor Widgets gespeicherten Daten verliert, obwohl ich zur Bestätigung keine mehreren Tests durchgeführt habe.

228
Evster

Am besten exportieren Sie Ihre Datenbank nach .sql, öffnen sie in Notepad ++ und gehen Sie zu "Suchen und Ersetzen". Dann setzen Sie "utf8mb4" auf search und "utf8" on ersetzen. Es ersetzt die Datei utf8mb4_unicode_ci nach utf8_unicode_ci . Jetzt gehen Sie zu Ihrem PhpMyAdmin (Ziel) und setzen die DB-Sortierung auf utf8_unicode_ci (Operationen> Sortierung).

123

ich benutze das in Linux:

sed -i 's/utf8mb4/utf8/g' your_file.sql
sed -i 's/utf8_unicode_ci/utf8_general_ci/g' your_file.sql
sed -i 's/utf8_unicode_520_ci/utf8_general_ci/g' your_file.sql

stellen Sie dann your_file.sql wieder her

mysql -uyourdbuser -pyourdbpasswd yourdb < your_file.sql
35
halilintar8

Wordpress 4.2 führte die Unterstützung für die Zeichencodierung "utf8mb4" aus Sicherheitsgründen ein, aber nur MySQL 5.5.3 und höher unterstützen dies. Das Installationsprogramm (und der Updater) behandeln dies, indem Sie Ihre MySQL-Version überprüfen und Ihre Datenbank auf utfmb4 nur wenn unterstützt aktualisiert wird.

Theoretisch klingt dies großartig, aber das Problem (wie Sie entdeckt haben) ist, wenn Sie Datenbanken von einem MySQL-Server, der utf8mb4 unterstützt, auf einen Server migrieren, der dies nicht tut. Während umgekehrt funktionieren sollte, handelt es sich im Wesentlichen um eine Einwegoperation.

Wie Evster darauf hinweist, haben Sie eventuell Erfolg mit der "Export" -Funktion von PHPMYAdmin. Verwenden Sie "Export-Methode: Benutzerdefiniert" und für das "Datenbanksystem oder älterer MySQL-Server, um die Ausgabekompatibilität zu maximieren) mit:" Dropdown-Auswahl "MYSQL 40".

Für einen Befehlszeilenexport mit mysqldump. Schauen Sie sich die Flagge an:

$ mysqldump --compatible=mysql4

Hinweis: Wenn sich in der Datenbank 4-Byte-Zeichen befinden, werden diese beschädigt.

Für jeden, der das beliebte WP Migrate DB PRO-Plugin verwendet, berichtet ein Benutzer in diesem Wordpress.org-Thread , dass die Migration immer ordnungsgemäß gehandhabt wird, aber ich keine offiziellen Informationen finden konnte.

Das DB-Plugin WP migriert die Datenbank von einer Sortierung in die andere, wenn 4.2-Sites zwischen Hosts mit MySQL vor oder nach 5.5.3 verschoben werden

Derzeit scheint es keine Möglichkeit zu geben, die Aktualisierung der Datenbank abzulehnen. Wenn Sie also einen Workflow verwenden, bei dem Sie eine Site von einem Server oder einem localhost mit MySQL> 5.5.3 auf einen Server migrieren, der eine ältere MySQL-Version verwendet, haben Sie möglicherweise kein Glück.

27
Mark Thomson

In meinem Fall fällt es mir aus
Neuer Server lief MySQL 5.5,
alter Server lief MySQL 5.6.
Ich habe diese Fehlermeldung erhalten, als ich versuchte, die .sql-Datei zu importieren, die ich von meinem alten Server exportiert hatte.

MySQL 5.5 unterstützt utf8mb4_unicode_520_ci nicht, aber
MySQL 5.6 tut dies.

Beim Update auf MySQL 5.6 auf dem neuen Server wurde der Fehler behoben!

Wenn Sie MySQL 5.5 beibehalten möchten, können Sie:
Erstellen Sie eine Kopie Ihrer exportierten .sql-Datei
- Instanzen von utf8mb4unicode520_ci und utf8mb4_unicode_520_ci ersetzen
... mit utf8mb4_unicode_ci
- importieren Sie Ihre aktualisierte .sql-Datei.

22
SherylHohman

In wp-config.php gibt es eine Zeile:

define('DB_CHARSET', 'utf8mb4');

Wenn Sie die Anweisungen von Markouver / - Evster befolgen, vergessen Sie nicht, diese Zeile auf dem Produktionsserver in zu ändern

define('DB_CHARSET', 'utf8');

um defekte 4-Byte-Zeichen zu korrigieren

15
Isk1n

Nach langjähriger Recherche habe ich die Lösung für oben gefunden:

  1. Zuerst ändern Sie die wp-config.php> Datenbank DB_CHARSET defaultzu "utf8". 

  2. Klicken Sie auf die Registerkarte "Export" für die Datenbank

  3. Klicken Sie auf das Optionsfeld "Benutzerdefiniert"

  4. Gehen Sie in den Abschnitt "Formatspezifische Optionen" und ändern Sie die Dropdown für "Datenbanksystem oder älteren MySQL-Server zur Maximierung der Ausgabekompatibilität mit .__:" von NONE bis MYSQL40.

  5. Scrollen Sie nach unten und klicken Sie auf "Weiter"

Dann bist du dran.

9
Dead Boyz

Anscheinend bietet Ihr Host keine MySQL-Version, die Tabellen mit utf8mb4-Kollatierung ausführen kann.

Die WordPress-Tabellen wurden mit Version 4.2 (veröffentlicht am 23. April 2015) in utf8mb4 geändert, um Emojis zu unterstützen, aber Sie benötigen MySQL 5.5.3. 5.5.3. ist ab März 2010 und sollte normalerweise allgemein verfügbar sein. Können Sie prü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 suchen, um die neuesten WordPress-Versionen auszuführen (und Sie sollten dies aus Sicherheitsgründen immer tun).

7
flomei

Also habe ich auf diese Weise von MySQL 5.6 bis MySQL 5.5 gelöst:

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql
$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql

(Optional) Erstellen Sie eine .sql.gz-Datei:

$ gzip database_name.sql 

Erläuterung

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql

Wie in dieser Antwort erläutert, entspricht dies nur den Optionen von phpMyAdmin: "Datenbanksystem oder älterem MySQL-Server zur Maximierung der Ausgabekompatibilität mit:" Dropdown-Auswahl "MYSQL 40".

$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql

Wir brauchen das, um dieses Problem zu lösen:

ERROR 1064 (42000) in Zeile 18: Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie im Handbuch Ihrer MySQL-Server-Version nach der richtigen Syntax in der Nähe von 'TYPE = InnoDB' in Zeile 9

2
Andrea

Der einfachste Weg ist, Ihre Datenbank nach .sql zu exportieren, sie in Notepad ++ zu öffnen und "utf8mb4_unicode_ci" in "utf8_unicode_ci" zu "Suchen und Ersetzen". Ersetzen Sie auch utf8mb4 in utf8. Vergessen Sie auch nicht, die Datenbankkollatierung in utf8_unicode_ci (Operationen> Sortierung) zu ändern.

1
raBne

Ich habe dieses Problem auch erlebt. Eine Lösung, die für mich funktionierte, war das Öffnen der lokalen Datenbank mit Sequel Pro und Update Encoding and Collation nach utf8/utf8_bin für jede Tabelle vor dem Import. 

1
Damian Walsh

Öffnen Sie die SQL-Datei in Notepad ++ und ctrl + H. Dann setzen Sie "utf8mb4" in die Suche und "utf8" in "replace ...".

0
John