Mysql
 sql >> база данни >  >> RDS >> Mysql

Не може да се инициализира набор от символи utf8mb4 с Windows mysql-python

Разгледайте следния контролен списък:

  1. Проверихте ли вашия конфигурационен файл на 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)
    

    -благодарение на публикацията в блога на Матиас

  2. 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()
    
  3. Официален съвет от 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 опция.

      • Копирайте файловете с дефиниция на знаци в пътя, където клиентът очаква да бъдат.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Искам да използвам повторно пропуските на изтритите редове

  2. NetBeans. Свържете се с хостинг база данни

  3. Объркваща SQL грешка в SELECT NULL, *, NULL, NULL

  4. Mysql Изберете реципрочни двойки записи, без дубликати

  5. Как да изтриете редове от три таблици - грешка в заявката