Considera la seguente lista di controllo:
-
Hai controllato il tuo file di configurazione MySQL (/etc/my. cf) ? Dovrebbe essere:
[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
E puoi verificarli tramite:
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)
-grazie al post del blog di Mathias
-
Enfore, imporre l'utilizzo di UTF-8 tra Python e 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()
- grazie alla Risposta di Tomasz Nguyen su StackOverflow
-
Suggerimento ufficiale da MySQL riguardo a
Can't initialize character set
:Questo errore può avere una delle seguenti cause:
-
Il set di caratteri è un set di caratteri multibyte e non hai supporto per il set di caratteri nel client. In questo caso, devi ricompilare il client eseguendo CMake con il
-DDEFAULT_CHARSET=charset_name
o-DWITH_EXTRA_CHARSETS=charset_name
opzione. Vedere la Sezione 2.9.4, "MySQL Source-Configuration Opzioni” . -
Tutti i binari MySQL standard sono compilati con -
DWITH_EXTRA_CHARSETS=complex
, che abilita il supporto per tutti i set di caratteri multibyte. Vedere la Sezione 2.9.4, "MySQL Source-Configuration Opzioni” . -
Il set di caratteri è un set di caratteri semplice che non viene compilato in mysqld e i file di definizione del set di caratteri non si trovano nel posto in cui il client si aspetta di trovarli.
In questo caso, è necessario utilizzare uno dei seguenti metodi per risolvere il problema:
-
Ricompilare il client con il supporto per il set di caratteri. Vedere la Sezione 2.9.4, "MySQL Source-Configuration Opzioni” .
-
Specificare al client la directory in cui si trovano i file di definizione del set di caratteri. Per molti client, puoi farlo con
--character-sets-dir
opzione. -
Copia i file di definizione dei caratteri nel percorso in cui il client si aspetta che siano.
-
-