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

cài đặt utf8mb4 cho lịch - không hoạt động

Trước tiên, hãy đảm bảo rằng máy chủ của bạn được định cấu hình đúng cách để sử dụng utf8mb4. Làm theo hướng dẫn này , bạn cần thêm phần sau vào my.cnf của mình (hoặc my.ini nếu bạn đang sử dụng Windows):

[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

Điều đó yêu cầu máy chủ MySQL sử dụng utf8mb4 và bỏ qua bất kỳ mã hóa nào do máy khách đặt.
Sau đó, tôi không cần thiết lập bất kỳ thuộc tính bổ sung nào trên kết nối MySQL trong Talend. Tôi đã thực hiện truy vấn này trong Talend để kiểm tra mã hóa do nó đặt:

SHOW VARIABLES 
WHERE Variable_name LIKE 'character\\_set\\_%' OR Variable_name LIKE 'collation%'

Và nó đã trả lại:

|=-----------------------+-----------------=|
|Variable_Name           |Value             |
|=-----------------------+-----------------=|
|character_set_client    |utf8mb4           |
|character_set_connection|utf8mb4           |
|character_set_database  |utf8mb4           |
|character_set_filesystem|binary            |
|character_set_results   |                  |
|character_set_server    |utf8mb4           |
|character_set_system    |utf8              |
|collation_connection    |utf8mb4_unicode_ci|
|collation_database      |utf8mb4_unicode_ci|
|collation_server        |utf8mb4_unicode_ci|
'------------------------+------------------'

Thử nghiệm sau để chèn một đống phân có tác dụng:

Cập nhật

Sử dụng các thành phần MySQL gốc trong Talend 6.3.1, bạn nhận được mysql-connector-java-5.1.30-bin.jar , vốn được cho là sẽ tự động phát hiện utf8mb4 được máy chủ sử dụng, nhưng vì một số lý do (lỗi?), nó không làm điều đó.
Tôi đã chuyển sang sử dụng các thành phần JDBC và tải xuống mysql trình kết nối (mysql-connector-java-5.1.45-bin.jar ), Tôi đã làm cho nó hoạt động bằng cách đặt các thông số bổ sung này trên tJDBCConnection thành phần:

useUnicode=true&characterEncoding=utf-8

(ngay cả khi tôi chỉ định utf-8, tài liệu cho biết nó sẽ coi nó là utf8mb4)

Đây là công việc của tôi bây giờ:




  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 thực thi kiểu dữ liệu char (N) thay vì varchar (N) trong trường mô hình django

  2. MySQL - cập nhật tất cả các bản ghi để khớp với giá trị tối đa trong nhóm

  3. (cần tư vấn) Nói chuyện với cơ sở dữ liệu máy chủ MySQL từ Ứng dụng Android của tôi

  4. Xác định tệp cấu hình MySQL nào đang được sử dụng

  5. Tính giá trị trung vị với Mysql