Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ustawienie utf8mb4 dla Talend - nie działa

Najpierw upewnij się, że Twój serwer jest prawidłowo skonfigurowany do korzystania z utf8mb4.Postępując zgodnie z tym samouczkiem , musisz dodać następujące elementy do my.cnf (lub my.ini w systemie 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

To mówi serwerowi MySQL, aby używał utf8mb4 i ignorował kodowanie ustawione przez klienta.
Po tym nie musiałem ustawiać żadnych dodatkowych właściwości połączenia MySQL w Talend. Wykonałem to zapytanie w Talend, aby sprawdzić ustawione przez nie kodowanie :

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

I wrócił:

|=-----------------------+-----------------=|
|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|
'------------------------+------------------'

Poniższy test wstawiania kupy działa:

Aktualizacja

Używając natywnych komponentów MySQL w Talend 6.3.1, otrzymujesz mysql-connector-java-5.1.30-bin.jar , który ma automatycznie wykrywać utf8mb4 używany przez serwer, ale z jakiegoś powodu (błąd?) tego nie robi.
Przełączyłem się na używanie komponentów JDBC i pobrałem najnowszy mysql złącze (mysql-connector-java-5.1.45-bin.jar ), udało mi się uruchomić, ustawiając te dodatkowe parametry w tJDBCConnection składnik :

useUnicode=true&characterEncoding=utf-8

(nawet jeśli określam utf-8, dokument mówi, że potraktuje go jako utf8mb4)

Oto jak teraz wygląda moja praca:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. delphi dxExpress MySQL:nieprawidłowa wartość LAST_INSERT_ID

  2. Baza danych/SQL:Jak przechowywać dane dotyczące długości/szerokości geograficznej?

  3. EclipseLink nie może pobrać skalarnej wartości logicznej

  4. wybierz z jednej tabeli, policz z drugiej, gdzie id jest połączony

  5. Uzyskujesz maksymalną liczbę wierszy w grupie?