sql >> Database >  >> RDS >> Mysql

utf8mb4-instelling voor talent - werkt niet

Zorg er eerst voor dat uw server correct is geconfigureerd om utf8mb4 te gebruiken.Volg deze zelfstudie , moet u het volgende toevoegen aan uw my.cnf (of my.ini als u Windows gebruikt):

[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

Dat vertelt de MySQL-server om utf8mb4 te gebruiken en elke codering die door de client is ingesteld te negeren.
Daarna hoefde ik geen extra eigenschappen op de MySQL-verbinding in Talend in te stellen. Ik heb deze query uitgevoerd in Talend om de codering te controleren die erdoor is ingesteld:

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

En het keerde terug:

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

De volgende test om een ​​stapel poep in te voegen werkt:

Bijwerken

Als je native MySQL-componenten gebruikt in Talend 6.3.1, krijg je mysql-connector-java-5.1.30-bin.jar , die verondersteld wordt automatisch de utf8mb4 te detecteren die door de server wordt gebruikt, maar om de een of andere reden (bug?) doet het dat niet.
Ik schakelde over op het gebruik van JDBC-componenten en downloadde de nieuwste mysql connector (mysql-connector-java-5.1.45-bin.jar ), heb ik het werkend gekregen door deze aanvullende parameters in te stellen op de tJDBCConnection onderdeel :

useUnicode=true&characterEncoding=utf-8

(zelfs als ik utf-8 specificeer, zegt de doc dat het het zal behandelen als utf8mb4)

Zo ziet mijn baan er nu uit:




  1. Hoe .htaccess te gebruiken voor mooie links

  2. Gebruikers toevoegen, verwijderen en bewerken door admin in php

  3. JPA houdt veel tot velen aan

  4. Multi-threading C#-toepassing met SQL Server-databaseaanroepen