sql >> Databáze >  >> RDS >> Mysql

Potíže s vkládáním 4bajtových znaků UTF-8 / emoji do databáze MySQL, když je aktivní trigger vložení

K tomu dochází, protože information_schema.processlist používá znakovou sadu UTF8mb3. (UTF je alias pro UTFmb3). Tento jednoduchý dotaz to ilustruje:

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

Výše uvedené varování pravděpodobně způsobí chybu, když se spouštěč pokusí vložit obsah info sloupec do jiné tabulky.

Myslím, že problém je v tom, že řetězec dotazu je uložen tak, jak je v processlist tabulku, aniž by ji převedl na očekávanou znakovou sadu. Odeslal jsem hlášení o chybě o tom.



  1. cc1:chyba:nerozpoznaná možnost příkazového řádku -Wno-null-conversion během instalace python-mysql na mac 10.7.5

  2. Vložit blob do databáze Oracle pomocí C#

  3. Konfigurace oprávnění ScaleGrid na AWS pomocí šablony zásad IAM

  4. Zobrazit všechny řádky v tabulce mysql a poté dát možnost smazat konkrétní