Zvažte následující kontrolní seznam:
-
Zkontrolovali jste svůj konfigurační soubor MySQL (/etc/my. cnf) ? Mělo by to být:
[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
A můžete je ověřit prostřednictvím:
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)
-
Enfore vynutit použití UTF-8 mezi Pythonem a 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()
-
Oficiální tip z MySQL ohledně
Can't initialize character set
:Tato chyba může mít některou z následujících příčin:
-
Znaková sada je vícebajtová znaková sada a v klientovi tuto znakovou sadu nepodporujete. V tomto případě musíte klienta znovu zkompilovat spuštěním CMake s
-DDEFAULT_CHARSET=charset_name
nebo-DWITH_EXTRA_CHARSETS=charset_name
volba. Viz oddíl 2.9.4, „Konfigurace zdroje MySQL Možnosti” . -
Všechny standardní binární soubory MySQL jsou zkompilovány s -
DWITH_EXTRA_CHARSETS=complex
, který umožňuje podporu všech vícebajtových znakových sad. Viz oddíl 2.9.4, „Konfigurace zdroje MySQL Možnosti” . -
Znaková sada je jednoduchá znaková sada, která není zkompilována do mysqld a definiční soubory znakové sady nejsou na místě, kde je klient očekává.
V tomto případě musíte k vyřešení problému použít jednu z následujících metod:
-
Znovu zkompilujte klienta s podporou pro znakovou sadu. Viz oddíl 2.9.4, „Konfigurace zdroje MySQL Možnosti” .
-
Zadejte klientovi adresář, kde jsou umístěny soubory definic znakové sady. U mnoha klientů to můžete provést pomocí
--character-sets-dir
možnost. -
Zkopírujte soubory s definicemi znaků do cesty, kde je klient očekává.
-
-