Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем при вмъкването на 4-байтови UTF-8 символи/емоджи в базата данни на MySQL, когато тригерът за вмъкване е активен

Това се случва, защото information_schema.processlist използва набор от символи UTF8mb3. (UTF е псевдоним на UTFmb3). Тази проста заявка илюстрира това:

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

Горното предупреждение вероятно води до грешка, когато тригерът се опита да вмъкне съдържанието на info колона в друга таблица.

Мисля, че проблемът е, че низът на заявката се съхранява както е в processlist таблица, без да я конвертирате в очаквания набор от знаци. Подадох доклад за грешка за това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изтрийте файл с помощта на MySQL процедура

  2. Проста PHP система за гласуване

  3. Запазване на данни на арабски в MySQL база данни

  4. MySQL заявка, за да получите най-продаваните продукти

  5. Качване на множество файлове на сървър, като php не качва на сървъра всички файлове