Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể khởi tạo bộ ký tự utf8mb4 bằng Windows mysql-python

Hãy xem xét danh sách kiểm tra sau:

  1. Bạn đã kiểm tra tệp cấu hình MySQL (/ etc / my) của mình không. cnf) ? Nó phải là:

    [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
    

    Và bạn có thể xác minh chúng qua:

    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)
    

    -cảm ơn bài đăng trên blog của Mathias

  2. Trước khi thực thi UTF-8 được sử dụng giữa Python và 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. Mẹo chính thức từ MySQL liên quan đến Can't initialize character set :

    Lỗi này có thể do bất kỳ nguyên nhân nào sau đây:

    • Bộ ký tự là một bộ ký tự nhiều byte và bạn không có hỗ trợ cho bộ ký tự trong ứng dụng khách. Trong trường hợp này, bạn cần phải biên dịch lại máy khách bằng cách chạy CMake với -DDEFAULT_CHARSET=charset_name hoặc -DWITH_EXTRA_CHARSETS=charset_name quyền mua. Xem Phần 2.9.4, “Cấu hình nguồn MySQL Tùy chọn ” .

    • Tất cả các tệp nhị phân MySQL tiêu chuẩn được biên dịch với - DWITH_EXTRA_CHARSETS=complex , cho phép hỗ trợ tất cả các bộ ký tự nhiều byte. Xem Phần 2.9.4, “Cấu hình nguồn MySQL Tùy chọn ” .

    • Bộ ký tự là một bộ ký tự đơn giản không được biên dịch thành mysqld và các tệp định nghĩa bộ ký tự không ở nơi mà khách hàng mong đợi tìm thấy chúng.

      Trong trường hợp này, bạn cần sử dụng một trong các phương pháp sau để giải quyết vấn đề:

      • Biên dịch lại ứng dụng khách với sự hỗ trợ cho bộ ký tự. Xem Phần 2.9.4, “Cấu hình nguồn MySQL Tùy chọn ” .

      • Chỉ định cho máy khách thư mục chứa các tệp định nghĩa bộ ký tự. Đối với nhiều ứng dụng khách, bạn có thể thực hiện việc này với --character-sets-dir tùy chọn.

      • Sao chép các tệp định nghĩa ký tự vào đường dẫn mà khách hàng mong đợi chúng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo trình kích hoạt để xóa php myadmin

  2. có gì sai với thủ tục của tôi trong mysql?

  3. Tạo bảng trong MySQL

  4. Đây có phải là một lược đồ DB tốt cho các vị trí không

  5. PDO bindValue với \ PDO ::PARAM_BOOL khiến việc thực thi câu lệnh không thành công một cách âm thầm