Meine Erkenntnisse:
Laut Dokumentation – den einzigen Hinweis auf die Dokumentation habe ich im Guide zum Contribution Workflow gefunden – ist die Datenbank ab MySQL Version 8.0 mit der Kollation utf8mb4_0900_ai_ci
anzulegen, unter Version 8.0 in utf8mb4_general_ci
.
Laut ChatGPT in utf8mb4
eine erweiterte Version des UTF-8-Zeichensatzes, die bis zu 4 Bytes pro Zeichen verwendet. Sie umfasst das gesamte Unicode-Spektrum, einschließlich aller Emoji und Sonderzeichen.
0900_ai_ci
bezieht sich auf die Unicode-Kollationsalgorithmus-Version 9.0.0 mit „Accent Insensitive“ und „Case Insensitive“. Das bedeutet, dass Groß-/Kleinschreibung und Akzente bei Vergleichen nicht beachtet werden.
Wenn ich lokal mit Docker und DDEV ein neues Projekt anlege, wird die Datenbank ohne mein Zutun mit der Kollation utf8mb4_general_ci
angelegt.
general_ci
steht für „General Case Insensitive“. Es bietet eine einfachere und schnellerer Sortier- und Vergleichsregel als utf8mb4_0900_ai_ci
. Groß- und Kleinschreibung werden nicht berücksichtigt, aber die Akzentbehandlung ist weniger präzise.
Diese Kollation ist in der Regel schneller als utf8mb4_0900_ai_ci
, aber sie kann in einigen Fällen zu weniger genauen Ergebnissen führen, insbesondere bei der Sortierung von Zeichen in verschiedenen Sprachen.
Für meine Zwecke scheint es erst einmal einerlei zu sein, ob general_ci
oder 0900_ai_ci
zur Anwendung kommt.
Wenn ich aber nun TYPO3 über die Konsole installiere, werden die Tabellen mit der Kollation utf8mb3_unicode_ci
angelegt.
utf8mb3
ist eine ältere Version des UTF-8-Zeichensatzes in MySQL, die maximal 3 Bytes pro Zeichen verwendet. Es unterstützt nicht alle Unicode-Zeichen, insbesondere einige seltene Zeichen und Emoji sind nicht enthalten.
Der Test jedoch bestätigt: Ein Eintragen von Emojis ist möglich.
Vielleicht habe ich im Laufe der Entwicklung der Seite einen Bock geschossen, vielleicht ist aber auch etwas andere passiert, ich habe keine Ahnung. Schlussendlich habe ich mir scheinbar mit dem Umwandeln von utf8mb3
auf utf8mb4
auch noch den Index der Live-Datenbank zerschossen, sodass diese nicht mehr importiert oder exportiert werden kann.
Ich gehe lieber den Weg einer neuen Installation. Die paar Einträge auf der Seite übertrage ich jetzt manuell in eine frische Installation, die dann hoffentlich einige Jahre lang läuft. 😉