sql >> Database teknologi >  >> RDS >> Mysql

utf8mb4 indstilling for talent - virker ikke

Først skal du sikre dig, at din server er korrekt konfigureret til at bruge utf8mb4. Ved at følge denne tutorial , skal du tilføje følgende til din my.cnf (eller my.ini, hvis du er på Windows):

[client]default-character-set =utf8mb4[mysql]default-character-set =utf8mb4[mysqld]character-set-client-handshake =FALSEcharacter-set-server =utf8mb4collation-server =utf8mb4_unicode_ci kode> 

Det fortæller MySQL-serveren at bruge utf8mb4 og ignorere enhver kodning, der er indstillet af klienten.
Derefter behøvede jeg ikke at indstille nogen yderligere egenskaber på MySQL-forbindelsen i Talend. Jeg har udført denne forespørgsel i Talend for at kontrollere kodningen indstillet af den :

VIS VARIABLER HVOR Variable_name LIKE 'character\\_set\\_%' ELLER Variable_name LIKE 'collation%' 

Og det returnerede:

|=------------------------------+----------------=||Variable_Name |Værdi ||=-----------------------------+-----------------=||character_set_client |utf8mb4 ||character_set_connection|utf8mb4 ||character_set_database |utf8mb4 ||character_set_filesystem|binært ||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|'----------------------------- -+------------------------'

Følgende test til at indsætte en bunke af afføring virker:

Opdater

Ved at bruge native MySQL-komponenter i Talend 6.3.1 får du mysql-connector-java-5.1.30-bin.jar , som formodes automatisk at detektere den utf8mb4, der bruges af serveren, men af ​​en eller anden grund (bug?) gør den det ikke.
Jeg skiftede til at bruge JDBC-komponenter og downloadede den seneste mysql connector (mysql-connector-java-5.1.45-bin.jar ), Jeg fik det til at fungere ved at indstille disse yderligere parametre på tJDBCConnection komponent:

useUnicode=true&characterEncoding=utf-8 

(selvom jeg angiver utf-8, siger lægen, at den vil behandle det som utf8mb4)

Sådan ser mit job ud nu :




  1. Hvordan kan jeg bekræfte butikskoden i mysql og opdatere tabellen, hvis resultatet returnerer sandt

  2. python mysqldb fejl på min mac:Bibliotek ikke indlæst:@rpath/libmysqlclient.21.dylib

  3. Nogle ENHVER Aggregerede Transformationer er ødelagte

  4. array_agg for arraytyper