Разгледайте следния контролен списък:
-
Проверихте ли вашия конфигурационен файл на MySQL (/etc/my. cnf) ? Трябва да бъде:
[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
И можете да ги потвърдите чрез:
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 налага UTF-8 да се използва между Python и 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()
- благодарение на отговора на Tomasz Nguyen относно stackoverflow
-
Официален съвет от MySQL относно
Can't initialize character set
:Тази грешка може да има някоя от следните причини:
-
Наборът от знаци е многобайтов набор от знаци и нямате поддръжка за набора от знаци в клиента. В този случай трябва да прекомпилирате клиента, като стартирате CMake с
-DDEFAULT_CHARSET=charset_name
или-DWITH_EXTRA_CHARSETS=charset_name
опция. Вижте раздел 2.9.4, “MySQL Source-Configuration Опции“ . -
Всички стандартни двоични файлове на MySQL са компилирани с -
DWITH_EXTRA_CHARSETS=complex
, което позволява поддръжка за всички многобайтови набори от знаци. Вижте раздел 2.9.4, “MySQL Source-Configuration Опции“ . -
Наборът от знаци е прост набор от знаци, който не е компилиран в mysqld и файловете с дефиниции на набора от знаци не са на мястото, където клиентът очаква да ги намери.
В този случай трябва да използвате един от следните методи за разрешаване на проблема:
-
Прекомпилирайте клиента с поддръжка за набора от символи. Вижте раздел 2.9.4, “MySQL Source-Configuration Опции“ .
-
Посочете на клиента директорията, където се намират файловете с дефиниции на набора от знаци. За много клиенти можете да направите това с
--character-sets-dir
опция. -
Копирайте файловете с дефиниция на знаци в пътя, където клиентът очаква да бъдат.
-
-