Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema: "Date Truncated for colum"

Estas en el tema de Problema: "Date Truncated for colum" en el foro de Mysql en Foros del Web. Hola. Tengo un campo "av_dato" del tipo FLOAT, al realizar la siguiente sentencia SQL: Código PHP: UPDATE op_alarma_global SET av_dato  = ''  SUCEDE LO SIGUIENTE: Versión: 5.0.22 En ...
  #1 (permalink)  
Antiguo 03/12/2009, 13:03
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Problema: "Date Truncated for colum"

Hola. Tengo un campo "av_dato" del tipo FLOAT, al realizar la siguiente sentencia SQL:

Código PHP:
UPDATE op_alarma_global SET av_dato ='' 
SUCEDE LO SIGUIENTE:

Versión: 5.0.22 En BD externa Envia Error y NO REALIZA LA SENTENCIA SQL



Versión 5.0.67 En BD local Envia Warning pero SI REALIZA LA SENTENCIA SQL


¿Cuál será la manera más general de arreglar esto sin tener que modificar la sentencia SQL?

Muchas Gracias.
__________________
-La duda es la base del conocimiento-

Última edición por phidalgo; 03/12/2009 a las 15:06
  #2 (permalink)  
Antiguo 03/12/2009, 13:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema: "Date Truncated for colum"

Envíale un decimal, no una cadena.
El MySQL está esperando recibir un valor FLOAT y está recibiendo una cadena vacía, que no puede interpretar y devuelve ese error. Es habitual. Lo que debes tener en cuenta es que un caracter vacío ('') no es un NULL. Si quieres enviar NULL, debes poner
Código sql:
Ver original
  1. UPDATE op_alarma_global SET av_dato = NULL;
No envíes valores numéricos como cadenas, tienden a generar errores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/12/2009 a las 13:41
  #3 (permalink)  
Antiguo 03/12/2009, 13:26
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Problema: "Date Truncated for colum"

Gracias por responder, lo que dices es cierto, pero lo que busco es una solución de raíz ya que se trata de migrar un sistema completo a otro servidor, luego, sería eterno revisar cada sentencia UPDATE o INSERT. Este el único problema que existe. Quizás haya alguna variable de mysql que se pueda setear u otra cosa más general.

Saludos.
__________________
-La duda es la base del conocimiento-
  #4 (permalink)  
Antiguo 03/12/2009, 13:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema: "Date Truncated for colum"

La solución cae medio de cajón: Usa una función de conversión...
Código sql:
Ver original
  1. UPDATE op_alarma_global
  2. SET av_dato =IF((dato IS NULL) OR (dato = ''), 0, dato);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/12/2009, 15:03
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Problema: "Date Truncated for colum"

Si gnzsoloyo, pero como comentaba anteriormente, la idea es evitar intervenir el código fuente, por eso intento buscar algún "seteo" o algo por el estilo que me ayude a que la BD EXTERNA se comporte como la BD LOCAL en donde el problema no es problema ya que de todas maneras permite la ejecución de la sentencia y no la trunca como la otra BD (ver imagenes en post).

Hasta ahora solo tengo una pequeña pista: set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1) que la verdad no se donde se utiliza ni como ocuparla ...en eso estoy :p

Gracias muchas.
__________________
-La duda es la base del conocimiento-
  #6 (permalink)  
Antiguo 08/12/2009, 09:51
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: Problema: "Date Truncated for colum"

Finalmente encontré la solución, lo que había que hacer es setear la variable "sql_mode", más precisamente el modo "STRICT_TRANS_TABLES" ya que este obliga a los valores a insertarse tal y cual están definidos en una tabla transaccional, de no ser así aborta el comando (justo lo que me pasaba con la versión 5.0.22)

Entonces: SET @@SESSION.sql_mode='' y listo.
__________________
-La duda es la base del conocimiento-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:34.