Estoy trabajando con una base de datos bastante simple, desde una aplicación Java. Estamos tratando de insertar aproximadamente 200,000 de texto a la vez, usando el adaptador estándar JDBC mysql. Recibimos intermitentemente un com.mysql.jdbc.MysqlDataTruncation: Truncamiento de datos: datos demasiado largos para el error de columna.Error de truncamiento de datos MySQL
El tipo de columna es longtext y la intercalación de la base de datos es UTF-8. El error aparece usando ambos motores de tabla MyISAM e InnoDB. El tamaño máximo de paquete se ha establecido en 1 GB tanto en el lado del cliente como en el del servidor, por lo que tampoco debería estar causando problemas.
¿Cómo puedo comprobar que mis datos UTF-8 es todos los 3 bytes byte Unicode? – JAVAGeek
@JAVAGeek: Buena pregunta, que probablemente debería formularse por separado. Hay varias formas. Fuera de mi cabeza, una forma que podría funcionar en Java es comprobar si hay puntos de código en la cadena que están representados por más de un carácter, como este: 's.length() == s.toCharArray () .length'. Si eso es cierto, 's' tiene el mismo número de puntos de código y caracteres, por lo que solo habrá caracteres BMP que estén representados en UTF-8 hasta en 3 bytes. – Avi