sql >> Databáze >  >> RDS >> Mysql

Nelze inicializovat znakovou sadu utf8mb4 pomocí Windows mysql-python

Zvažte následující kontrolní seznam:

  1. 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)
    

    -díky Mathiasově příspěvku na blogu

  2. 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()
    
  3. 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á.



  1. Jak získat všechny řádky, které obsahují jiné znaky než [a-zA-Z] v MySQL

  2. Vytvoření souboru Json s C# dat mysql

  3. Skrývá se chybová zpráva PHP / MySQL

  4. Jak uniknout mysql v magentu?