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

MySQL vyvolá chybu nesprávné hodnoty řetězce

Problém způsobuje postava na konci tweetu.

Vypadá to jako znak 'emoji' neboli japonský smajlík, ale nezobrazuje se mi v Chrome ani Safari.

Existují známé problémy s ukládáním 4bajtových znaků utf v některých verzích MySQL. Zjevně musíte použít utf8mb4 k reprezentaci 4bajtových znaků UTF, protože normální znaková sada utf8 může reprezentovat pouze znaky o délce do 3 bajtů, a tak nemůže ukládat znaky, které jsou mimo Základní vícejazyčná rovina

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

Což je pro mě novinka, protože to v podstatě znamená, že datový typ utf8 v MySQL není ve skutečnosti správný utf8.

Zde jsou návrhy, jak to vyřešitJak vložit znak utf-8 mb4 (emoji v ios5) do mysql? včetně:

"Také se ujistěte, že vaše vrstva aplikace nastavuje znakovou sadu databázových připojení na utf8mb4. Znovu zkontrolujte, že se to skutečně děje - pokud používáte starší verzi klientské knihovny mysql zvoleného rámce, možná nebyla zkompilována s podporou utf8mb4." a nenastaví znakovou sadu správně. Pokud ne, možná ji budete muset aktualizovat nebo zkompilovat sami"

Pokud používáte Connector/J, musíte nastavit character_set_server=utf8mb4 v konfiguraci připojení.

Všechny vaše znakové sady by měly být utf8mb4, což jste možná zkoušeli, ale aktuálně nemáte nastaveno.



  1. Jak SHOW CHARACTER SET funguje v MariaDB

  2. SQL Server sp_msforeachtable použití k výběru pouze těch tabulek, které splňují určitou podmínku

  3. Přístup k databázi MySQL z mého projektu VB.NET 2008

  4. Najít sloupce vrácené funkcí s hodnotou tabulky (příklady T-SQL)