sql >> Databasteknik >  >> RDS >> Mysql

Problem med att infoga 4-byte UTF-8-tecken/emoji i MySQL-databasen när infogningsutlösaren är aktiv

Detta beror på att information_schema.processlist använder UTF8mb3 teckenuppsättning. (UTF är ett alias till UTFmb3). Denna enkla fråga illustrerar detta:

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

Ovanstående varning resulterar förmodligen i ett fel när utlösaren försöker infoga innehållet i info kolumn till en annan tabell.

Jag tror att problemet är att frågesträngen lagras som den är i processlist tabell utan att konvertera den till den förväntade teckenuppsättningen. Jag har lämnat in en felrapport om detta.



  1. Hur man skapar mysql-databas med sequelize (nodejs)

  2. MySQL välj slumpmässig rad med JOIN från två tabeller

  3. Hur man får poster mellan 2 datum i MySQL

  4. Vad är standardbegränsningsnamnet i PostgreSQL?