Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema ao inserir caracteres/emoji UTF-8 de 4 bytes no banco de dados MySQL quando o gatilho de inserção está ativo


Isso acontece porque information_schema.processlist está usando o conjunto de caracteres UTF8mb3. (UTF é um alias para UTFmb3). Esta consulta simples ilustra isso:
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

O aviso acima provavelmente resultará em um erro quando o gatilho tentar inserir o conteúdo do info coluna em outra tabela.

Eu acho que o problema é que a string de consulta é armazenada como está na processlist tabela sem convertê-la para o conjunto de caracteres esperado. Enviei um relatório de bug sobre isso.