Ungültiger Zeichenkettenwert: '\xF0\x9F...' für die Spalte
Jemand hatte ein Emoji im Namen, und deine Datenbank kann keine Emojis speichern.
Mach das zuerst
Deine Datenbank und ihre Verbindung müssen utf8mb4 nutzen. Eine einmalige Umstellung.
Was es bedeutet
Es wurde ein Zeichen geschrieben, das der Zeichensatz der Spalte nicht darstellen kann. Die Byte-Folge in der Meldung, die mit \xF0\x9F beginnt, ist ein Emoji: vier Bytes — und MySQLs altes utf8 ist eine Drei-Byte-Kodierung, die sie nicht speichern kann.
Was es auslöst
Sortiert danach, wie oft es die Antwort ist.
- 1
Ein Emoji in einem Spielernamen oder einer Chatnachricht
Mit Abstand die häufigste Form. Discord- und Steam-Namen sind voll davon.
- 2
Die Datenbank ist utf8 und nicht utf8mb4
MySQLs
utf8war schon immer ein unvollständiges UTF-8.utf8mb4ist das echte. - 3
Der Zeichensatz der Verbindung ist nicht gesetzt
Die Tabelle kann utf8mb4 sein und die VERBINDUNG trotzdem utf8 — es scheitert genauso. Das ist die, die alle übersehen.
- 4
Akzentuierter oder CJK-Text in einer latin1-Spalte
Ein älteres Schema, das nie migriert wurde.
Wie du erkennst, welcher deiner ist
SHOW VARIABLES LIKE 'character_set_%'; SHOW FULL COLUMNS FROM users;
Wenn die Spalte utf8mb4 sagt, die Verbindung aber utf8, liegt es am Verbindungsstring.
Wo du nachsehen musst
Der Verbindungsstring in der server.cfg und der Zeichensatz der Tabelle.
Wie du es behebst
Setz beides. Zuerst die Verbindung, denn das ist die vergessene Hälfte:
set mysql_connection_string "mysql://user:pass@host/db?charset=utf8mb4"
Dann das Schema:
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Hängst du immer noch an deinem eigenen Code?
Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.
bug_reportServer Fixer öffnenFür diese Art Fehler Script Optimizer erkennt die Abfragemuster, die das verursachen.