Mysql
 sql >> Database >  >> RDS >> Mysql

Problema durante l'inserimento di caratteri/emoji UTF-8 a 4 byte nel database MySQL quando il trigger di inserimento è attivo

Ciò accade perché information_schema.processlist sta usando il set di caratteri UTF8mb3. (UTF è un alias di UTFmb3). Questa semplice query illustra questo:

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

L'avviso di cui sopra probabilmente genera un errore quando il trigger tenta di inserire il contenuto delle info colonna in un'altra tabella.

Penso che il problema sia che la stringa di query è archiviata così com'è in processlist tabella senza convertirla nel set di caratteri previsto. Ho presentato una segnalazione di bug su questo.