Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problemy z wstawianiem 4-bajtowych znaków UTF-8 / emoji do bazy danych MySQL, gdy aktywny jest wyzwalacz wstawiania

Dzieje się tak, ponieważ information_schema.processlist używa zestawu znaków UTF8mb3. (UTF to alias do UTFmb3). To proste zapytanie ilustruje to:

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

Powyższe ostrzeżenie prawdopodobnie spowoduje błąd, gdy wyzwalacz spróbuje wstawić zawartość info do innej tabeli.

Myślę, że problem polega na tym, że ciąg zapytania jest przechowywany tak, jak na processlist tabeli bez konwertowania jej na oczekiwany zestaw znaków. Złożyłem zgłoszenie błędu o tym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Określanie nazwy zmiennej w klauzuli QUERY WHERE w JDBC

  2. Wielokrotne autouzupełnianie rozdzielane przecinkami w jednym polu

  3. CodeIgniter przełączający sterownik z mysql --> mysqli

  4. Cake php Datasource klasa MySQL nie została znaleziona

  5. Zapisz dane w języku arabskim w bazie danych MySQL