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

utf8mb4 настройка за talend - не работи

Първо се уверете, че вашият сървър е правилно конфигуриран да използва utf8mb4. Следвайки този урок , трябва да добавите следното към вашия my.cnf (или my.ini, ако сте под 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

Това казва на MySQL сървъра да използва utf8mb4 и да игнорира кодирането, зададено от клиента.
След това не трябваше да задавам никакви допълнителни свойства на MySQL връзката в Talend. Изпълних тази заявка в Talend, за да проверя зададеното от нея кодиране:

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   |                  |
|character_set_server    |utf8mb4           |
|character_set_system    |utf8              |
|collation_connection    |utf8mb4_unicode_ci|
|collation_database      |utf8mb4_unicode_ci|
|collation_server        |utf8mb4_unicode_ci|
'------------------------+------------------'

Следният тест за вмъкване на купчина изпражнения работи:

Актуализиране

Използвайки собствени компоненти на MySQL в Talend 6.3.1, получавате mysql-connector-java-5.1.30-bin.jar , който трябва да открие автоматично utf8mb4, използван от сървъра, но по някаква причина (бъг?) не го прави.
Превключих на използване на JDBC компоненти и изтеглих най-новия mysql конектор (mysql-connector-java-5.1.45-bin.jar ), накарах го да работи, като зададох тези допълнителни параметри на tJDBCConnection компонент :

useUnicode=true&characterEncoding=utf-8

(дори и да посоча utf-8, документът казва, че ще го третира като utf8mb4)

Ето как изглежда моята работа сега :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. python кодиране на mysql :(

  2. MySQL търсене в пълен текст

  3. Python peewee save() не работи според очакванията

  4. MySql - Има ли опашка със заявки някъде

  5. Заявка точки в рамките на даден радиус в MySQL