Tänk på följande checklista:
-
Kollade du din MySQL-konfigurationsfil (/etc/my. cnf) ? Det ska vara:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
Och du kan verifiera dem via:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+ 10 rows in set (0.00 sec)
-tack vare Mathias blogginlägg
-
Tvinga upp UTF-8 som ska användas mellan Python och MySQL:
# Connect to mysql. dbc = MySQLdb.connect(host='###', user='###', passwd='###', db='###', use_unicode=True) # Create a cursor. cursor = dbc.cursor() # Enforce UTF-8 for the connection. cursor.execute('SET NAMES utf8mb4') cursor.execute("SET CHARACTER SET utf8mb4") cursor.execute("SET character_set_connection=utf8mb4") # Do database stuff. # Commit data. dbc.commit() # Close cursor and connection. cursor.close() dbc.close()
- tack vare Tomasz Nguyens svar om stackoverflow
-
Officiellt tips från MySQL angående
Can't initialize character set
:Det här felet kan ha någon av följande orsaker:
-
Teckenuppsättningen är en multibyte-teckenuppsättning och du har inget stöd för teckenuppsättningen i klienten. I det här fallet måste du kompilera om klienten genom att köra CMake med
-DDEFAULT_CHARSET=charset_name
eller-DWITH_EXTRA_CHARSETS=charset_name
alternativ. Se avsnitt 2.9.4, “MySQL Source-Configuration Alternativ” . -
Alla standard MySQL-binärer kompileras med -
DWITH_EXTRA_CHARSETS=complex
, vilket möjliggör stöd för alla multibyte-teckenuppsättningar. Se avsnitt 2.9.4, “MySQL Source-Configuration Alternativ” . -
Teckenuppsättningen är en enkel teckenuppsättning som inte är kompilerad i mysqld, och teckenuppsättningens definitionsfiler finns inte på den plats där klienten förväntar sig att hitta dem.
I det här fallet måste du använda någon av följande metoder för att lösa problemet:
-
Kompilera om klienten med stöd för teckenuppsättningen. Se avsnitt 2.9.4, “MySQL Source-Configuration Alternativ” .
-
Ange för klienten katalogen där teckenuppsättningsdefinitionsfilerna finns. För många klienter kan du göra detta med
--character-sets-dir
alternativ. -
Kopiera teckendefinitionsfilerna till den sökväg där klienten förväntar sig att de ska vara.
-
-