5
(2)

WordPress – Fix Illegal mix of collations

Erstellt am: 6. Februar 2024


ACHTUNG! Bitte lesen!

Du benutzt das hier Gezeigte natürlich, wie immer, auf eigenes Risiko!
Ich habe alles selbst durchgeführt und mir mein System nicht zerschossen oder sonst irgendwelche negativen Auffälligkeiten bemerkt.

Aber dennoch… Backups sind immer gut….
Für WordPress-Backups am besten mit UpdraftPlus

Ich übernehme keine Haftung für irgendwelche Schäden am System, der Hardware oder der Katze…. :-P

Affiliate - Links

Auf meiner Seite verwende ich sogenannte Affiliate-Links, diese sind mit einem gekennzeichnet, damit du diese auch direkt erkennen kannst.

Sobald du über so einen Link das Produkt kaufen würdest, erhalte ich möglicherweise eine Provision vom jeweiligen Anbieter.
Außerdem entstehen für Dich natürlich keine zusätzlichen Kosten!
Mich unterstützt du damit aber enorm und trägst dazu bei, dass es auch in Zukunft weitere Guides und Vorstellungen von mir hier geben wird.

Ich empfehle nur Tools / PlugIns / Anbieter / Produkte, hinter denen ich auch wirklich stehe, bzw. ich auch einen Mehrwert sehe.

DarkWolfCave.de ist Teilnehmer des Amazon-Partnerprogramm, das zur Bereitstellung eines Mediums für Webseiten konzipiert wurde, mittels dessen durch die Platzierung von Partner-Links zu Amazon.de Entgelte verdient werden können.


PHP picture

WordPress – Fix Illegal mix of collations

Ich habe bei einem meiner Projekte letztens durch Zufall im Log einen Fehler gesehen, welchen ich gerne beheben wollte. Dort gab es einen Eintrag mit “WordPress-Datenbank-Fehler Illegal mix of collations” und den betroffenen Datenbank-Kollationen.
Bis zu diesem Zeitpunkt war es mir nicht bewusst, dass ein solcher Fehler auftreten könnte. Scheinbar kann dieses bei Umzügen der Datenbanken bzw. Hoster passieren.
In diesem Artikel zeige ich dir, wie du das Problem beheben kannst.

DarkWolfCave.de

WordPress – Illegal mix of collations Fehler beheben

Falls du dich fragst, was Kollationen genau sind und wieso diese einen Fehler erzeugen können, dann kann ich hier vielleicht ein wenig Licht ins Dunkle bringen, ohne zu sehr in die Details von Datenbanken abzutauchen.

Fangen wir ganz vorn an. Der genannte Fehler im ErrorLog mit: WordPress-Datenbank-Fehler Illegal mix of collations besagt, dass unter anderem zwei Tabellen miteinander verglichen werden sollten, diese aber eine jeweils andere Kollation benutzen. Warum gibt es dabei eine Fehlermeldung?

Das Problem beim Vergleichen von Tabellen mit unterschiedlichen Kollationen liegt darin, dass die Art und Weise, wie Zeichen in verschiedenen Kollationen interpretiert werden, unterschiedlich sein kann. Die Kollation beeinflusst die Reihenfolge von Zeichen, Groß- und Kleinschreibung, die Berücksichtigung von Akzenten und Sonderzeichen und andere Aspekte.

Wenn du versuchst, Daten zwischen Tabellen mit unterschiedlichen Kollationen zu vergleichen, könnten Unstimmigkeiten auftreten, da die Datenbank möglicherweise nicht in der Lage ist, korrekte Vergleiche durchzuführen. Zum Beispiel könnte die gleiche Zeichenfolge in einer Kollation als gleich betrachtet werden, während sie in einer anderen Kollation als unterschiedlich betrachtet wird.

Das kann zu inkonsistenten Ergebnissen führen und Probleme bei Abfragen, Sortierungen und Vergleichen verursachen. Daher ist es in der Regel eine bewährte Praxis, sicherzustellen, dass Tabellen, die miteinander verglichen oder verknüpft werden sollen, die gleiche Kollation haben.

Illegal mix of collations - Darkwolfcave.de

Wir sollten uns daher um dieses Problem kümmern und dieses beheben.

Bevor wir loslegen, noch ein paar grundsätzliche Dinge zu diesem Thema. Die Vorgehensweisen, wie du Änderungen an deiner Datenbank durchführen kannst oder musst, können recht unterschiedlich sein.
Hier kommt es unter anderem darauf an, welche Datenbank du benutzt (MySQL, MariaDB usw.) und ob du es über eine GUI (phpMyAdmin) oder CLI (also Terminal-Befehle) durchführst.

Weiterhin empfehle ich dir auf jeden Fall ein Backup deiner Datenbank, bevor du Änderungen durchführst!
Auch dies kannst du auf unterschiedliche Arten durchführen.

Als WordPress Integration (Plugin) kann ich dir dafür UpdraftPlus empfehlen.
Natürlich kannst du ein Backup auch möglicherweise direkt über deinen Webhoster, oder direkt in phpMyAdmin durchführen.

Illegal mix of collations – Genutzte Kollation(en) auf Datenbank anzeigen lassen

Ich werde hier jetzt phpMyAdmin benutzen, da es für die Meisten am einfachsten und bekanntesten sein wird.
Zuerst würde ich gerne wissen, wie viele unterschiedliche Kollationen in meiner Datenbank vorhanden sind.
Der Schritt ist nicht wirklich notwendig, aber interessant. Dafür führe ich folgenden SQL-Befehl aus (bei TABLE_SCHEMA = ‘NAME-DEINER-DATENBANK’ musst du natürlich den Namen deiner Datenbank eintragen) :

Dafür klickst du in phpMyAdmin einfach auf SQL:

Illegal mix of collations - SQL für Kollationen
SELECT table_name, table_collation
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'NAME-DEINER-DATENBANK';

Hier werden dir dann alle Tabellen(-Namen) und deren Kollation angezeigt. Bei vielen Tabellen kann es schnell unübersichtlich werden. Möchtest du einfach nur die Anzahl und die verschiedenen Kollationen sehen, gruppieren wir unsere Ausgabe einfach ein wenig:

SELECT table_collation, COUNT(*) AS table_count
FROM information_schema.tables
WHERE table_schema = 'NAME-DEINER-DATENBANK'
GROUP BY table_collation;

In meinem Fall sah es dann so aus:

Illegal mix of collations - Unterschiedliche Kollationen

Illegal mix of collations – Die Standard Kollation auf der Datenbank ändern

Es gibt also 2 unterschiedliche Kollationen in dieser Datenbank. Beginnen wir damit, eine Kollation als default einzurichten. Jede weitere, neu erstellte Tabelle würde dann diese Kollation erhalten. Aber welche sollen wir nehmen?
Ein kurzer Blick ins Internet und ich musste feststellen, die Frage scheint nicht oft gestellt zu werden.

Also habe ich mir mal den Sourcecode von WordPress angeschaut, um zu sehen, was diese dort verwenden würden.
Nachsehen kannst du das auch gerne selbst in GitHub :

Illegal mix of collations - WordPress GitHub

Es werden diverse Abfragen gestartet, ob eine bestimmte Kollation auf der Datenbank vorhanden/verfügbar ist.
Am Ende wird auf die utf8mb4_unicode_520_ci verwiesen. Sollte diese also verfügbar sein, wird empfohlen diese zu nutzen. Mit dem Wissen schauen wir uns jetzt phpMyAdmin an. Einfach oben links auf das Haus und dann auf den Kollation-Namen klicken. Aus dem Drop-Down-Feld nehmen wir dann den utf8mb4_unicode_520_ci Eintrag:

Illegal mix of collations - phpMyAdmin default Kollation

Diese Änderung bringt natürlich nichts bei den bereits verwendeten Tabellen. Um diese kümmern wir uns jetzt.

Illegal mix of collations – Änderung der Kollation in den Tabellen


Aber: Bevor du weiter machst, lege ein Backup deiner Daten an! Falls nicht schon wie oben erwähnt geschehen.

Ich lasse mir immer erst anzeigen, was geändert wird, bevor ich dann wirklich ein Update oder Delete durchführe.
Du kannst den Schritt natürlich überspringen. Mit einer leichten Anpassung des SQL-Befehls lasse ich mir hiermit alle Tabellen anzeigen, die nicht utf8mb4_unicode_520_ci als Kollation haben:

SELECT table_name, table_collation
FROM information_schema.tables
WHERE table_schema = 'NAME-DEINER-DATENBANK'
AND table_collation != 'utf8mb4_unicode_520_ci';

Somit hättest du jetzt deine Ansicht und Anzahl der Tabellen, die wir ändern wollen. Im nächsten Schritt erzeugen wir ALTER TABLE Befehle mit den entsprechenden Tabellen und der neuen Kollation. Dieses Ergebnis musst du dann erneut in SQL ausführen.
Starte mit:

SELECT CONCAT(
    'ALTER TABLE `', table_name, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;'
) AS alter_statement
FROM information_schema.tables
WHERE table_schema = 'NAME-DEINER-DATENBANK'
AND table_collation != 'utf8mb4_unicode_520_ci';

Je nach Einstellung in phpMyAdmin wirst du die Ausgabe nicht ganz sehen können. Da wir damit aber weiter arbeiten möchten, sollten wir auch alles sehen können. Dafür klick auf “Zusätzliche Optionen” und dann wähle “Vollständige Texte” aus und bestätige mit “OK”:

Illegal mix of collations - Alter Table vollständig anzeigen

Deine Ausgabe sollte jetzt auch vollständig sein und ähnlich wie bei mir aussehen. Markiere und kopiere alle Zeilen und füge sie in eine neue SQL-Abfrage ein und bestätige mit ok. Mit diesen ALTER TABLE Befehlen führen wir dann final die Änderungen an den Tabellen durch:

Illegal mix of collations - Zusammengefasste Alter Table Befehle
Illegal mix of collations

Jetzt kannst du erneut die SQL-Abfrage vom Anfang benutzen, um zu sehen, ob deine Änderungen auch erfolgreich waren:

Illegal mix of collations - Korrigierte Ansicht - nach der Änderung durch die Alter Table

Prüfe jetzt deine WordPress Umgebung und die Artikel, ob dir Fehler auffallen oder dir sonstige Probleme begegnen. Du hast natürlich dein Backup, welches du ansonsten zurückspielen könntest! ;-)

Falls du diesen Artikel nur aus Interesse gelesen hast, und dein letzter Blick in deine error.logs schon länger her ist, ist dies hier vielleicht eine Erinnerung dort mal wieder nachzuschauen. Und wer weiß, vielleicht steht auch bei dir etwas von “Illegal mix of collations” ;-)

Ansonsten hoffe ich natürlich, dass ich dir ein wenig mit diesem Artikel helfen konnte.

FAQ - Frequently Asked Questions DarkWolfCave

FAQ´s

Dieser Fehler tritt auf, wenn zwei Tabellen in der WordPress-Datenbank mit unterschiedlichen Kollationen miteinander verglichen werden sollen. Die Kollation einer Datenbank bestimmt, wie Zeichen interpretiert und sortiert werden. Wenn Tabellen unterschiedliche Kollationen haben, kann dies zu Inkonsistenzen und Fehlern führen.

Du kannst SQL-Abfragen in Tools, wie phpMyAdmin verwenden, um die Kollationen der Tabellen in deiner Datenbank anzuzeigen. Du kannst unter anderem den folgenden Befehl verwenden:

SELECT table_name, table_collation
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'NAME-DEINER-DATENBANK';

Es wird empfohlen, die Kollation utf8mb4_unicode_520_ci zu verwenden, da diese von WordPress unterstützt wird und eine gute Unicode-Unterstützung bietet.

Ja, Änderungen an der Kollation können potenziell zu Datenverlust oder Inkonsistenzen führen. Daher ist es wichtig, vor dem Durchführen von Änderungen ein Backup deiner Datenbank zu erstellen und Änderungen sorgfältig zu planen.

Natürlich! Über eine entsprechende Patreon-Mitgliedschaft biete ich dir einen exklusiven und persönlichen Zugang in Discord an.
Hier stehe ich dir dann für deine Fragen zur Verfügung.
Gerne können wir auch in einem Discord-Call direkt an deinem PC alles Schritt für Schritt durchgehen.
Wenn du also detaillierte Einblicke in meine Blog-Reihe “Snippets aus der Praxis” oder spezifische Fragen zu WordPress, Webentwicklung oder anderen Themen hast, stehe ich dir über die entsprechende Patreon-Mitgliedschaft persönlich zur Verfügung.

Du hast weitere Fragen oder benötigst Hilfe? Gerne versuche ich im Rahmen meiner Möglichkeiten dich zu unterstützen. Dafür kannst du hier die Kommentar-Sektion (nicht vergessen Antworten zu abonnieren) nutzen oder du schaust auf meinem Discord-Kanal vorbei.

Trage dich in den Newsletter ein!

Sie sehen gerade einen Platzhalterinhalt von Brevo. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Gefällt dir der Beitrag?
Hinterlasse gerne ein paar Sterne!

Wie hilfreich war dieser Beitrag für Dich?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 2

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Abonnieren
Benachrichtige mich bei
guest
0 Kommentare
Inline Feedbacks
Alle Kommentare anzeigen