sql >> Databasteknik >  >> RDS >> Mysql

MySQL kastar Inkorrekt strängvärdefel

Det är karaktären i slutet av tweeten som orsakar problemet.

Det ser ut som en "emoji"-karaktär alias japansk smiley men den visas inte för mig i varken Chrome eller Safari.

Det finns kända problem med att lagra 4byte utf-tecken i vissa versioner av MySQL. Tydligen måste du använda utf8mb4 för att representera 4 byte UTF-tecken, eftersom den normala utf8-teckenuppsättningen bara kan representera tecken upp till 3 byte långa och därför inte kan lagra tecken som ligger utanför Basic Multilingual Plane

http://dev.mysql.com/doc /refman/5.5/en/charset-unicode-utf8mb4.html

Vilket är en nyhet för mig eftersom det i princip betyder att utf8-datatypen i MySQL inte riktigt är korrekt utf8.

Det finns förslag på hur man hanterar detta härHur infogar man utf-8 mb4-tecken (emoji i ios5) i mysql? inklusive:

"Se även till att ditt applager ställer in sina databasanslutningars teckenuppsättning till utf8mb4. Dubbelkolla att detta faktiskt händer – om du kör en äldre version av ditt valda ramverks mysql-klientbibliotek kanske det inte har kompilerats med stöd för utf8mb4 och den kommer inte att ställa in teckenuppsättningen korrekt. Om inte, kan du behöva uppdatera den eller kompilera den själv"

Om du använder Connector/J måste du ställa in character_set_server=utf8mb4 i anslutningskonfigurationen.

Alla dina teckenuppsättningar ska vara utf8mb4, som du kanske har provat men inte är inställda för närvarande.



  1. Undertryck varningsmeddelanden med mysql från terminalen, men lösenordet skrivet i bash-skript

  2. Introduktion till PL/SQL-paket i Oracle Database

  3. Hur hittar man skillnaden i svartvitt TIMESTAMP-format i Oracle?

  4. välja rader med id från en annan tabell