sql >> Database >  >> RDS >> Mysql

Problemen met het invoegen van 4-Byte UTF-8-tekens/emoji in MySQL-database wanneer de invoegtrigger actief is

Dit gebeurt omdat information_schema.processlist gebruikt UTF8mb3-tekenset. (UTF is een alias voor UTFmb3). Deze eenvoudige vraag illustreert dit:

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

De bovenstaande waarschuwing resulteert waarschijnlijk in een fout wanneer de trigger probeert de inhoud van de info . in te voegen kolom naar een andere tabel.

Ik denk dat het probleem is dat de queryreeks wordt opgeslagen zoals in de processlist tabel zonder deze te converteren naar de verwachte tekenset. Ik heb een bugrapport ingediend hierover.



  1. mysqli voorbereide instructie - werk NULL-waarden niet bij

  2. lagere_case_table_names Instellingen in MySQL 8.0.12

  3. Hoe kan ik mijn MySQL-log starten en controleren?

  4. CSV-upload met PHP/MySQL