Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Probleme beim Einfügen von 4-Byte-UTF-8-Zeichen/Emojis in die MySQL-Datenbank, wenn der Insert-Trigger aktiv ist

Dies geschieht, weil information_schema.processlist verwendet den Zeichensatz UTF8mb3. (UTF ist ein Alias ​​für UTFmb3). Diese einfache Abfrage veranschaulicht dies:

mysql> select info, "🔥" from information_schema.processlist;
+------------------------------------------------------+------+
| info                                                 | ?    |
+------------------------------------------------------+------+
| select info, "?" from information_schema.processlist | 🔥     |
+------------------------------------------------------+------+
1 row in set, 1 warning (0,00 sec)

Warning (Code 1366): Incorrect string value: '\xF0\x9F\x94\xA5" ...' for column 'INFO' at row 1

Die obige Warnung führt wahrscheinlich zu einem Fehler, wenn der Trigger versucht, den Inhalt der info einzufügen Spalte in eine andere Tabelle.

Ich denke, das Problem ist, dass die Abfragezeichenfolge so gespeichert wird, wie sie in der processlist ist Tabelle, ohne sie in den erwarteten Zeichensatz zu konvertieren. Ich habe einen Fehlerbericht eingereicht dazu.