2011-09-27 21 views
12

Me estoy poniendo la siguiente excepción actualizar una fila usando MySQL a través de JDBC:MySQL: el truncamiento de datos: fecha y hora incorrecta de valor: '2006-10-01 02:22:44'

com.mysql.jdbc truncamiento de datos:: .MysqlDataTruncation valor de fecha y hora incorrecta: '2006-10-01 02:22:44'

La columna se define como:

'created_on_service timestamp NULL DEFAULT NULL'

No hay índices o claves foráneas en esa columna.

Obviamente no es un problema con el tipo de datos. Tengo valores en esa tabla tanto antes como después de esa fecha y hora. También tengo valores con los tiempos antes y después de las 2:22 a.m.

+0

Esto podría ayudar a http://stackoverflow.com/questions/73109/mysql-data-truncation-error – Rasika

+1

Ese enlace se trata de datos de texto, específicamente conjuntos de caracteres de varios bytes. No es aplicable. Busqué StackOverflow para preguntas similares antes de publicar, pero no tengo suerte, me temo. – pricj004

Respuesta

14

Lo resolvió.

Resulta que el 1 de octubre de 2006 en el sur de Australia fue el comienzo del horario de verano. Los relojes se adelantan una hora a las 2:00 a.m., por lo que no había 2:22 a.m. en esa fecha: pasó directamente de las 2:00 a.m. a las 3:01 a.m.

Cambiaré la zona horaria db a UTC, lo que debería resolver este problema.

+0

Quería saber qué más opciones tenemos, si no es factible cambiar db-timezone. Sin embargo, realmente ahorraste mucho cansancio cerebral al señalar el problema. – linuxeasy

0

No mostró la actualización exacta de SQL. Pero puede ser que se olvide la parte de fecha

El formato correcto es aaaa hh-mm-dd: ss

valor de fecha debe estar en el formato siguiente 2011-11-01 12:32:01

: mm
+0

Estoy usando JDBC, por lo que el SQL exacto está oscurecido, pero a juzgar por el mensaje de error que recibo, el valor ya está en el formato aaaa-mm-dd hh: mm: ss. – pricj004

+0

Para Java, el formato real que utiliza un reloj de 24 horas debe ser: "aaaa-MM-dd HH: mm: ss" – theINtoy

2

Hemos actualizado el servidor MySQL pero no hemos actualizado el contenedor de conector mysql. Nos encontramos con este problema. Más tarde descubrí que era debido a la jarra vieja. Lo actualicé y este problema desapareció.

4

Solucioné el mismo problema (com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'perev_start_time' at row 1) actualizando mi conector MySQL JAR, y copiando mysql.jar en el directorio lib de Tomcat.

La versión del servidor MySQL es 5.6 y el conector MySQL es mysql-connector-java-5.1.30-bin.jar.

+0

Bienvenido al desbordamiento de pila. En general, las preguntas de seguimiento no se deben publicar como respuestas, sino que se deben [solicitar por separado] (http://stackoverflow.com/questions/ask). No dude en volver a vincular a esta pregunta, sin embargo. – Pokechu22

+2

Esto no parece una nueva pregunta – AbcAeffchen

Cuestiones relacionadas