Solución al Error de MySQL en programa GeneXus: Error Code 1366 Incorrect string value (Emojis)

DESARROLLO DE SOFTWARE CON GENEXUS

Fabricio De los Santos

9/19/20252 min read

Introducción al Error de MySql en un programa GeneXus

Este error generalmente aparece cuando intentas guardar un emoji en una columna de una tabla MySQL. Es probable que estés capturando un mensaje de Whatsapp o cualquier APP de mensajería y lo estés intentando guardar en la base de datos.

Causas del Error utf8

El error Incorrect string value (código 1366) aparece porque la base de datos/tabla/columna o la conexión están en utf8 (3 bytes) y no aceptan caracteres fuera del BMP, como emojis, ciertos kanjis o letras históricas.

La solución completa sería:

Migrar todo a utf8mb4 de punta a punta:

Base de datos en utf8mb4.

Tablas/columnas en utf8mb4 (y collation utf8mb4_unicode_ci o utf8mb4_0900_ai_ci en MySQL 8).

Conexión/driver declarando utf8mb4 (no utf8).

Pasos:

Verifica como están tu base, tus tablas actualmente.


SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
SHOW FULL COLUMNS FROM TuTabla;

Configura tu base de datos.

ALTER DATABASE TuBD
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Configura tu tabla.

ALTER TABLE TuTabla
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Este podría darte error con los datos relacionados de otras tablas, si te da problemas, puedes no hacerlo.

ALTER TABLE TuTabla
MODIFY TuCampo VARCHAR(100)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Si al ejecutar el script que altera la tabla (para campos de textos grandes) aparece Row size too large (1118) al convertir VARCHAR grandes, usar TEXT/MEDIUMTEXT/LONGTEXT o ROW_FORMAT=DYNAMIC.

En GeneXus un campo definido como LONGVARCHAR arriba de 66.000 ya se convierte en MEDIUMTEXT en MySQL

Agrega esto al string de conexión.

CharSet=utf8mb4 (aunque es opcional, en general cambiando la base y la tabla ya lo solucionas)

Con eso, los textos con emojis se almacenan sin problemas.

Qué opinan nuestros clientes

”Trabajar con Fabricio fue una experiencia enriquecedora. Su acompañamiento técnico fue clave en momentos decisivos del proyecto, y se destaca su compromiso para encontrar soluciones.”

- Gustavo

Tuve la suerte de conocer a Fabricio cómo consultor Genexus, se nota que ama lo que hace y lo transmite muy bien.
Aprendí muchísimo con él y espero volver a cruzarnos y seguir aprendiendo.

- Brian

¿No conoces GeneXus y te interesa saber de qué se trata?

¿O estás desarrollando un proyecto y necesitas apoyo para avanzar con más rapidez y confianza?

Con más de 25 años de experiencia internacional, he trabajado en más de 100 proyectos exitosos en América Latina y Europa, ayudando a empresas de todos los tamaños a crear software de forma más ágil, con menos código y mejores resultados.

Ya sea que estés empezando o necesites optimizar lo que ya tienes, puedo ayudarte a:

  • Evaluar si GeneXus es la mejor opción para tu caso

  • Desbloquear problemas técnicos o de arquitectura

  • Integrar sistemas, automatizar procesos y aplicar IA sin reinventar la rueda

  • Avanzar más rápido sin depender de programadores que no conocen tu negocio