Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tidak dapat menginisialisasi kumpulan karakter utf8mb4 dengan Windows mysql-python

Pertimbangkan daftar periksa berikut:

  1. Apakah Anda memeriksa file konfigurasi MySQL Anda (/etc/my. cnf) ? Seharusnya:

    [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
    

    Dan Anda dapat memverifikasinya melalui:

    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)
    

    -terima kasih kepada postingan blog Mathias

  2. Enfore menegakkan UTF-8 untuk digunakan antara Python dan 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. Kiat resmi dari MySQL mengenai Can't initialize character set :

    Kesalahan ini dapat disebabkan oleh salah satu penyebab berikut:

    • Kumpulan karakter adalah kumpulan karakter multibyte dan Anda tidak memiliki dukungan untuk kumpulan karakter di klien. Dalam hal ini, Anda perlu mengkompilasi ulang klien dengan menjalankan CMake dengan -DDEFAULT_CHARSET=charset_name atau -DWITH_EXTRA_CHARSETS=charset_name pilihan. Lihat Bagian 2.9.4, “Konfigurasi Sumber MySQL Opsi” .

    • Semua binari MySQL standar dikompilasi dengan -DWITH_EXTRA_CHARSETS=complex , yang memungkinkan dukungan untuk semua set karakter multibyte. Lihat Bagian 2.9.4, “Konfigurasi Sumber MySQL Opsi” .

    • Kumpulan karakter adalah kumpulan karakter sederhana yang tidak dikompilasi ke dalam mysqld, dan file definisi kumpulan karakter tidak berada di tempat yang diharapkan klien untuk menemukannya.

      Dalam hal ini, Anda perlu menggunakan salah satu metode berikut untuk menyelesaikan masalah:

      • Kompilasi ulang klien dengan dukungan untuk set karakter. Lihat Bagian 2.9.4, “Konfigurasi Sumber MySQL Opsi” .

      • Tentukan ke klien direktori tempat file definisi kumpulan karakter berada. Untuk banyak klien, Anda dapat melakukannya dengan --character-sets-dir pilihan.

      • Salin file definisi karakter ke jalur yang diharapkan klien.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Prosedur Langkah Demi Langkah untuk memigrasikan data dari Excel ke tabel database MySql

  2. Akses ditolak untuk Pengguna 'root'@'localhost' (menggunakan kata sandi:YA)

  3. SQL - Kesalahan kolom prosedur

  4. mysql menghasilkan tanggal yang hilang dengan nilai sebelumnya

  5. MySQL vs. JSON - Mengapa?