Betrachten Sie die folgende Checkliste:
-
Haben Sie Ihre MySQL-Konfigurationsdatei (/etc/my. cnf) ? Es sollte sein:
[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
Und Sie können sie überprüfen über:
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)
-Dank an Blogbeitrag von Mathias
-
Erzwingen Sie die Verwendung von UTF-8 zwischen Python und 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()
-
Offizieller Tipp von MySQL bezüglich
Can't initialize character set
:Dieser Fehler kann folgende Ursachen haben:
-
Der Zeichensatz ist ein Multibyte-Zeichensatz und Sie haben keine Unterstützung für den Zeichensatz im Client. In diesem Fall müssen Sie den Client neu kompilieren, indem Sie CMake mit
-DDEFAULT_CHARSET=charset_name
ausführen oder-DWITH_EXTRA_CHARSETS=charset_name
Möglichkeit. Siehe Abschnitt 2.9.4, „MySQL Source-Configuration Optionen“ . -
Alle standardmäßigen MySQL-Binärdateien werden mit -
DWITH_EXTRA_CHARSETS=complex
kompiliert , wodurch die Unterstützung aller Multibyte-Zeichensätze aktiviert wird. Siehe Abschnitt 2.9.4, „MySQL Source-Configuration Optionen“ . -
Der Zeichensatz ist ein einfacher Zeichensatz, der nicht in mysqld kompiliert ist, und die Zeichensatz-Definitionsdateien befinden sich nicht dort, wo der Client sie erwartet.
In diesem Fall müssen Sie eine der folgenden Methoden anwenden, um das Problem zu lösen:
-
Kompilieren Sie den Client mit Unterstützung für den Zeichensatz neu. Siehe Abschnitt 2.9.4, „MySQL Source-Configuration Optionen“ .
-
Geben Sie dem Client das Verzeichnis an, in dem sich die Zeichensatzdefinitionsdateien befinden. Bei vielen Clients können Sie dies mit
--character-sets-dir
tun Option. -
Kopieren Sie die Zeichendefinitionsdateien in den Pfad, in dem der Client sie erwartet.
-
-