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

Problemer med at indsætte 4-Byte UTF-8-tegn/emoji i MySQL-databasen, når indsæt-trigger er aktiv

Dette sker fordi information_schema.processlist bruger UTF8mb3 tegnsæt. (UTF er et alias til UTFmb3). Denne enkle forespørgsel illustrerer dette:

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

Ovenstående advarsel resulterer sandsynligvis i en fejl, når triggeren forsøger at indsætte indholdet af info kolonne ind i en anden tabel.

Jeg tror, ​​problemet er, at forespørgselsstrengen er gemt som den er i processlist tabel uden at konvertere den til det forventede tegnsæt. Jeg har indsendt en fejlrapport om dette.



  1. Brug OBJECTPROPERTY() til at finde ud af, om et objekt er en CHECK-begrænsning i SQL Server

  2. PostgreSQL – Sådan fjerner du gentagne værdier

  3. Algoritme til at vælge de mest populære steder fra databasen

  4. Yii2 viser data ved hjælp af hver sløjfe