sql >> Base de Datos >  >> RDS >> Mysql

configuración utf8mb4 para talend - no funciona

Primero, asegúrese de que su servidor esté correctamente configurado para usar utf8mb4. Siga este tutorial , debe agregar lo siguiente a su my.cnf (o my.ini si está en 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

Eso le dice al servidor MySQL que use utf8mb4 e ignore cualquier codificación establecida por el cliente.
Después de eso, no tuve que configurar ninguna propiedad adicional en la conexión MySQL en Talend. Ejecuté esta consulta en Talend para verificar la codificación establecida por él:

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

Y volvió:

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

La siguiente prueba para insertar un montón de caca funciona:

Actualizar

Al usar componentes MySQL nativos en Talend 6.3.1, obtiene mysql-connector-java-5.1.30-bin.jar , que se supone que detecta automáticamente el utf8mb4 usado por el servidor, pero por alguna razón (¿error?) no lo está haciendo.
Cambié a usar componentes JDBC y descargué el último mysql conector (mysql-connector-java-5.1.45-bin.jar ), lo hice funcionar configurando estos parámetros adicionales en tJDBCConnection componente :

useUnicode=true&characterEncoding=utf-8

(incluso si estoy especificando utf-8, el documento dice que lo tratará como utf8mb4)

Así es como se ve mi trabajo ahora: