Bevor Sie fortfahren
Bevor Sie fortfahren, stellen Sie sicher, dass:
- Confluence abgeschaltet ist
- Ein vollständiges Datenbank Backup vorliegt
Es ist außerdem sinnvoller wenn Sie diese Änderugen zuerst in einer Testumgebung ausprobieren, bevor Sie die Schritte auf die Produktivumgebung übertragen.
Wann dieser Fix sinnvoll ist
Wenn Sie feststellen, dass Ihre Inhalte nicht richtig angezeigt werden, dann sollten Sie diesen Fix anwenden. Zum Beispiel wird der String José
so angezeigt: José
.
Eine Spalte mit falsch kodierten Inhalten reparieren
Dazu müssen Sie die Spalten auswählen und sie zu previousEncoding
(wie z. B. latin1
) konvertieren und dann erst in binär und abschließend in utf8 umwandeln.
Wenn Sie SQL_SAFE_UPDATES auf 0 setzen bevor Sie die Abfrage starten, können Sie jede Zeile in der Tabelle updaten. Das ist potentiell unsicher und sollte zur Sicherheit durchgetestet werden bevor es an einem produktiven System angewendet wird.
SET SQL_SAFE_UPDATES=0; UPDATE tableName SET columnName = CONVERT(CAST(CONVERT(columnName USING previousEncoding) AS BINARY) USING utf8); SET SQL_SAFE_UPDATES=1;
Abhängig vom Zeichen und wie dieses kodiert ist, kann es sein, dass diese Abfrage ausreichend für die Lösung der Anzeigeprobleme ist. Deshalb könnten Sie vielleicht eine der alternativen Methoden unter "Weitere Quellen" benötigen.
Weiterführende Quellen
- MySQL Kollationsreparatur: Änderungen auf Datenbank-Ebene
- MySQL Kollationsreparatur: Änderungen auf Tabellen-Ebene
- MySQL Kollationsreparatur: Änderungen auf Spalten-Ebene
- MySQL Kollationsreparatur: Kodierprobleme auf Spalten-Ebene
- MySQL Kollationsreparatur: Fallstudie - Reparatur einer Produktionsdatenbank
- Percona - Jervin Real: utf8 data on latin1 tables; converting to utf8 without downtime or double encoding
- Joni Salonen - Fixing Mangled Characters
- Joni Salonen - Fixing Doubly UTF-8 Encoded Text in MySQL