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

Error al intentar grabar un campo NULL en una tabla

Estas en el tema de Error al intentar grabar un campo NULL en una tabla en el foro de Bases de Datos General en Foros del Web. Hola, Tengo un problema al registrar los campos de un formulario con el valor de NULL (Este valor se lo puse por que deseo que ...
  #1 (permalink)  
Antiguo 28/10/2010, 17:46
 
Fecha de Ingreso: junio-2009
Mensajes: 75
Antigüedad: 15 años, 5 meses
Puntos: 0
Error al intentar grabar un campo NULL en una tabla

Hola,

Tengo un problema al registrar los campos de un formulario con el valor de NULL (Este valor se lo puse por que deseo que puedan registrarse en la tabla de la BD aunque esten vacios los campos), por lo tanto deje los registros de la siguiente forma:
--------------------------------------------------------------------------------------------------
id bigint(20) No auto_increment
nombre_qreporta varchar(45) utf8_bin No
nombre_qrecibe varchar(45) utf8_bin No
extel varchar(5) utf8_bin No
fecha_solicitud varchar(11) utf8_bin No
via_sol varchar(25) utf8_bin No
dependencia varchar(70) utf8_bin No
q_atendio varchar(25) utf8_bin No
serviciotic varchar(50) utf8_bin No
especialista varchar(35) utf8_bin No
fecha_asignacion varchar(11) utf8_bin No
fecha_atencion varchar(11) utf8_bin Sí NULL
fecha_solucion varchar(11) utf8_bin No
fecha_cierre varchar(11) utf8_bin Sí NULL
---------------------------------------------------------------------------------------------------

si relleno todos los campos, no da error y por lo tanto graba correctamente los datos, mas si dejo en blanco los espacios NULL, me lanza error, por que sera esto?.
  #2 (permalink)  
Antiguo 28/10/2010, 18: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: 17 años
Puntos: 2658
Respuesta: Error al intentar grabar un campo NULL en una tabla

Cita:
si relleno todos los campos, no da error y por lo tanto graba correctamente los datos, mas si dejo en blanco los espacios NULL, me lanza error, por que sera esto?.
Sin saber cuál es el error que te devuelve, es imposible saber por dónde empezar.

Tip:
Tienes campos mal definidos. Las fechas no deben jamás ponerse como VARCHAR, para eso existen los tipos de dato DATETIME, DATE y TIMESTAMP. No solamente están mal definidos, sino que además estás desperdiciando espacio, porque un DATETIME usa 8 bytes y no 11.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/10/2010, 11:25
 
Fecha de Ingreso: junio-2009
Mensajes: 75
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Error al intentar grabar un campo NULL en una tabla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Sin saber cuál es el error que te devuelve, es imposible saber por dónde empezar.

Tip:
Tienes campos mal definidos. Las fechas no deben jamás ponerse como VARCHAR, para eso existen los tipos de dato DATETIME, DATE y TIMESTAMP. No solamente están mal definidos, sino que además estás desperdiciando espacio, porque un DATETIME usa 8 bytes y no 11.
Hola,

gracías por tu respuesta, pues si olvide poner el error, ademas no crei necesario ponerlo por que es seguro que sea por el tipo de datos NULL, en cuanto al tipo de campo decidi manejarlo como CHAR ya que uso el formato "dd/mm/aaaa" y le puse 11 por que pues es el numero de caracteres que son, aunque en realidad son 10, corregire eso mientras tanto, aunque francamente no se si el error sea por eso del tipo de datos, en cuanto al error, es el siguiente:

Código C:
Ver original
  1. Fallo en la insercion de registro en la Base de Datos: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 2

EDITO:

Eh cambiado los tipos de datos a DATE, y eh grabado con todos los campos llenos y graba correctamente, mas sin embargo si dejo los campos definidos como NULL vacios, me sigue lanzando el mismo error...

Código C:
Ver original
  1. Fallo en la insercion de registro en la Base de Datos: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 2

Saludos.

Última edición por Stackado; 29/10/2010 a las 11:32
  #4 (permalink)  
Antiguo 29/10/2010, 11:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Error al intentar grabar un campo NULL en una tabla

Cita:
en cuanto al tipo de campo decidi manejarlo como CHAR ya que uso el formato "dd/mm/aaaa" y le puse 11 por que pues es el numero de caracteres que son, aunque en realidad son 10,
Eso no se maneja poniendo VARCHAR, sino usando funciones como DATE_FORMAT(campofecha, '%d/%m/%Y'), suponiendo que estés usando MySQL..

Cita:
Fallo en la insercion de registro en la Base de Datos: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 2
Sería conveniente que postearas la sentencia, ya que es en ella donde se está produciendo el error. Pero antes de hacerlo, si estás manejando los datos a ingresar por medio de variables, lo que debes hacer es comprobar que las variables estén ingresando con datos reales o bien formados, ya que ese suele ser el problema más habitual.
Una de las formas de hacer esta comprobación es usar un front-end como phpMyadmin, MySQL Query Broswe, Navicat o MySQL Workbench y tratar de ejecutar la misma inserción pero con datos escritos manualmente. SI el INSERT funciona correctamente cuando poner valores a mano, entonces el error está en el código que estás programado, si falla en el SQL, al menos podrás comprobarlo en el momento directamente y ajustar el INSERT para hacerlo funcionar correctamente.
__________________
¿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 29/10/2010, 13:42
 
Fecha de Ingreso: junio-2009
Mensajes: 75
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Error al intentar grabar un campo NULL en una tabla

Listo problema solucionado, resulto ser de sintaxis, no encerraba entre comillas algunos valores, pero ya esta, algo curioso respecto al tipo de datos es que al poner DATE, me mandaba puros "0000/00/002 asi rellenara el campo o no, me puse a leer un poco y me di cuenta de que el formato de DATE es aaaa/mm/dd, creen que sea por eso?, mientras tanto lo eh dejado en VARCHAR.

Saludos.
  #6 (permalink)  
Antiguo 29/10/2010, 13:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Error al intentar grabar un campo NULL en una tabla

Cita:
campo o no, me puse a leer un poco y me di cuenta de que el formato de DATE es aaaa/mm/dd, creen que sea por eso?, mientras tanto lo eh dejado en VARCHAR.
Seguro que es eso. Lo que tienes que hacer es corregir la palicación para que cuando lea la fecha en el formulario luego lo envíe a la base de datos con el formato correcto (yyyy-mm-dd). Ese formato es estandar de todos los DBMS, y en todo caso si lo quieres seguir manejando en la aplicacion de esa forma lo que debes hacer es que en el INSERT, esté puesto por medio de la función STR_TO_DATE():
Código MySQL:
Ver original
  1. SRT_TO_DATE('23/10/2010', '%d/%m/%Y')
Con el resto de los DBMS (Orale, DB2, etc.) debes fijarte en el manual.

Atención con STR_TO_DATE(): Si usas "/", deben ir "/" en el patrón y no puedes cambiarlo; si usas "-" irán "-", ya que de lo contrario devolverá NULL
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: grabar, null, tablas, campos
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 20:22.