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

Problema NOT NULL

Estas en el tema de Problema NOT NULL en el foro de Mysql en Foros del Web. Muy buenas.... Desde ace tiempo consulto vustros foros cuando tengo alguna duda. Llevo mas de un año desde que me cree mi propia WEB con ...
  #1 (permalink)  
Antiguo 14/09/2009, 13:47
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 14 años, 7 meses
Puntos: 0
Problema NOT NULL

Muy buenas....

Desde ace tiempo consulto vustros foros cuando tengo alguna duda. Llevo mas de un año desde que me cree mi propia WEB con Base de Datos Mysql.

En algunos campos de las tablas seleccione la opcion de NOT NULL para que ese campo nunca estubiera vacion, osea que fiera obligatorio insertar un valor en el campo o si no daba error.

El problema que tengo es que aun teniendo la opcion NOT NULL activada ago un INSERT y dejando algunos campos vacios me lo acepta y me inserta la fila en vez de dar error.

Os explico:

Yo en mi PC tengo instalado una base de datos mysql y el apache para acer mis pruebas antes de subirlas al HOST. Uso el NAVICAT MySqL para controla mi base de datos y cuando inserto una fila en la tabla y dejo algun campo vacio me salta con el error "ERROR 1364 : Field 'campo' doesn't have a default value"
Osea como debe ser....... debido a que tengo la opcion NOT NULL activa y he dejado campos vacios da el error y no se inserta nada en la tabla.

Pero en el HOST uso phpMyAdmin para controla la base de datos y cuando inserto una fila con la consola y dejo algunos campos vacios en vez de dar errror me la inserta y donde no he puesto nada me lo deja en blanco (cosa que no deberia ser asi)

He busca informacion al respecto pero no encuentro nada.

la INFO de mi tabla es la siguiente:

+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| id_post | int(11) | NO | PRI | NULL | auto_increment |
| fk_categoria | int(11) | NO | | | |
| titulo | text | NO | | | |
| texto | text | NO | | | |
| nick | varchar(20) | NO | | | |
| fecha | varchar(20) | NO | | | |
| hora | varchar(8) | NO | | | |
| time | varchar(30) | YES | | NULL | |
| modificado | text | YES| | NULL | |
+--------------+-------------+------+-----+---------+----------------+
  #2 (permalink)  
Antiguo 14/09/2009, 13:50
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Problema NOT NULL

¿Como haces el insert?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 14/09/2009, 13:53
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 NOT NULL

Vayamos a las fuentes:
Cita:
Iniciado por MySQL.com
A.5.3. Problemas con valores NULL

El concepto del valor NULL es una fuente común de confusión para los recién llegados a SQL, que frecuentemente piensan que NULL es lo mismo que una cadena de caracteres vacía ''. Esto no es así. Por ejemplo, las siguientes sentencias son completamente diferentes:

mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ('');

Ambas sentencias insertan un valor en la columna phone, pero la primera inserta un valor NULL y la segunda una cadena vacía. El significado de la primera se puede traducir por “el número de teléfono no es conocido”, y el significado de la segunda es “se sabe que la persona no tiene teléfono, y por tanto, no hay número de teléfono.”
Todo esto implica que el problema debería estar en que al usar la consola de PHP, esta inserta espacios vacíos en lugar de NULL, lo que hace que se cumpla la restricción, pero no de la forma imaginada.
No olvidar: '' <> NULL.

La solución pasaría entonces por poner NULL en donde van esos campos, o bien indicar qué campos se están ingresando y poner los valores... con lo que saltaría la restricción.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 14/09/2009, 14:12
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema NOT NULL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Vayamos a las fuentes:


Todo esto implica que el problema debería estar en que al usar la consola de PHP, esta inserta espacios vacíos en lugar de NULL, lo que hace que se cumpla la restricción, pero no de la forma imaginada.
No olvidar: '' <> NULL.

La solución pasaría entonces por poner NULL en donde van esos campos, o bien indicar qué campos se están ingresando y poner los valores... con lo que saltaría la restricción.
Entonces que tendria que acer para que la tabla no aceptara valores vacios.

cuando inserto algo simplemente pongo:

INSERT INTO post (fk_categoria,titulo,texto,fecha,hora,time) VALUES ('1','La casa','lo k sea','13-09-09','20:00','136954145');

Como podeis ver en la sentencia no pongo nada en el campo NICK, simplemente lo salto

Con esa sentencia en mi PC me da error y en el HOST me acepta insertando la fila y en el campo NICK me aparece en BLANCO.

OSea me aparece ne blanco por k en los detalles del campo NICK k esta como NOT NULL en Default esta en blanco... si en DEFAULT pongo un valor cualkiera al insertar la fila como no ha recibido ningun valor en el campo NICK me pondria lo k he puesto en DEFAULT.

Pero yo no kiero k me ponga nada... simplemente de error al insertar la fila debido a k en el campo NICK no recivio nada
  #5 (permalink)  
Antiguo 15/09/2009, 05:59
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 NOT NULL

Cita:
Con esa sentencia en mi PC me da error y en el HOST me acepta insertando la fila y en el campo NICK me aparece en BLANCO.
Con esto estoy entendiendo que el problema no lo tienes en todos los casos sino solamente en el host remoto. Ahora bien: ¿Qué versión de MySQL usas en local y qué versión tiene el host remoto?

En tu primer post:
Cita:
Pero en el HOST uso phpMyAdmin para controla la base de datos y cuando inserto una fila con la consola y dejo algunos campos vacios en vez de dar errror me la inserta y donde no he puesto nada me lo deja en blanco (cosa que no deberia ser asi)
Entonces el problema se halla en el funcionamiento de PhpMyAdmin, no en la sentencia ni en la base. Es muy probable que sea EL PhpMyAdmin el que inserte caracteres vacíos. Fijate cómo es la sintaxis del INSERT que te hace en la ventana de SQL.

Por otro lado, el hecho de que el PhpMyAdmin los inserte no implica que cuando programes en PHP te pase lo mismo, porque en ese caso dependerá de la sintaxis de la sentencia que generes en el script, y no de PhpMyAdmin. PhpMyAdmin es una interfase programada para interactuar con el MySQL, pero no es el PHP en si.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 18:41.