Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème d'insertion de caractères/emoji UTF-8 de 4 octets dans la base de données MySQL lorsque le déclencheur d'insertion est actif

Cela se produit parce que information_schema.processlist utilise le jeu de caractères UTF8mb3. (UTF est un alias de UTFmb3). Cette requête simple illustre ceci :

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'avertissement ci-dessus entraîne probablement une erreur lorsque le déclencheur tente d'insérer le contenu de l'info colonne dans une autre table.

Je pense que le problème est que la chaîne de requête est stockée telle quelle dans le processlist table sans la convertir dans le jeu de caractères attendu. J'ai déposé un rapport de bogue à ce sujet.