redondeo metodo into insertar hacer funciones desde datos como java mysql jdbc

java - metodo - Error de truncamiento de datos MySQL



insertar mysql java (5)

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 mysql de JDBC. Recibimos intermitentemente un com.mysql.jdbc.MysqlDataTruncation: Truncamiento de datos: datos demasiado largos para el error de columna.

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.


Acabo de resolver este problema y lo resolví eliminando todos los caracteres ascii no estándar de mi texto (siguiendo las indicaciones de UTF-8 anteriores).

Tuve el problema en un sistema Debian 4, Java 5; pero el mismo código funcionó bien con Ubuntu 9.04, Java 6. Ambos ejecutan MySql 5.


Bueno, puede hacer que ignore el error haciendo un INSERTAR IGNORAR que simplemente truncará los datos e insertará de todos modos. (de http://dev.mysql.com/doc/refman/5.0/en/insert.html )

Si usa la palabra clave IGNORE, los errores que se producen al ejecutar la instrucción INSERT se tratan como advertencias. Por ejemplo, sin IGNORE, una fila que duplica un índice UNIQUE existente o un valor de PRIMARY KEY en la tabla provoca un error de clave duplicada y la instrucción se cancela. Con IGNORE, la fila aún no está insertada, pero no se emite ningún error. Las conversiones de datos que desencadenarían errores anulan la declaración si IGNORE no está especificado. Con IGNORE, los valores inválidos se ajustan a los valores más cercanos y se insertan; las advertencias se producen pero la declaración no aborta.


Comprueba que tus datos UTF-8 sean todos de Unicode de 3 bytes. Si tiene caracteres de 4 bytes (legales en Unicode y Java, ilegales en MySQL 5), puede arrojar este error cuando intente insertarlos. Este es un problema que debería solucionarse en MySQL 6.0.


En mysql puede usar el tipo de campo MEDIUMTEXT o LONGTEXT para datos de texto grandes


Me parece que intentas poner demasiados bytes en una columna. Anoche encontré un error muy similar con MySQL debido a un error en mi código. Quise hacer

foo.status = ''inactive''

pero en realidad había tipeado

foo.state = ''inactive''

Donde se supone que foo.state es un código de dos caracteres para un estado de EE. UU. (Varchar (2)). Tengo el mismo error que tú. Puede buscar una situación similar en su código.