Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Campos NOT NULL en MySQL 5.0 (http://www.forosdelweb.com/f86/campos-not-null-mysql-5-0-a-405695/)

frijolerou 29/06/2006 14:07

Campos NOT NULL en MySQL 5.0
 
Que tal!!!

Por más que intento, MySQL 5.0 no hace caso y no me deja crear campos definidos como NOT NULL, sino que irremediablemente los deja como NULL. Y tampoc hace caso al ediatr los campos para cambiarlos a NOT NULL.

He intentado hacerlo directamente con phpMyAdmin o mediante SQL, pero nada de dada, siempre los deja NULL.

Código:

CREATE TABLE `tabla` (
`campo1` VARCHAR( 22 ) NOT NULL ,
`campo2` VARCHAR( 222 ) NOT NULL
) ENGINE = MYISAM ;


claudiovega 29/06/2006 15:46

Lo probé en un shell mysql en linux y aqui el resultado:

Código:

mysql> CREATE TABLE `tabla` (
    -> `campo1` VARCHAR( 22 ) NOT NULL ,
    -> `campo2` VARCHAR( 222 ) NOT NULL
    -> ) ENGINE = MYISAM ;
Query OK, 0 rows affected (0.00 sec)

mysql> describe tabla;
+--------+--------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| campo1 | varchar(22)  | NO  |    | NULL    |      |
| campo2 | varchar(222) | NO  |    | NULL    |      |
+--------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Dice por defecto nulo, pero no se permiten nulos. Habría que dar valores por defecto.

upemor 25/07/2006 19:58

De acuerdo
 
Completamente de acuerdo con la respuesta anterior. la esctructura de la tabla es la misma debemos interpretar ese no dentro del campo como una negacion de nulos, ya que si intentas dejar vacio ese campo te marca error, comprobado.

arbi 12/06/2009 13:43

Respuesta: De acuerdo
 
Cita:

Iniciado por upemor (Mensaje 1637471)
Completamente de acuerdo con la respuesta anterior. la esctructura de la tabla es la misma debemos interpretar ese no dentro del campo como una negacion de nulos, ya que si intentas dejar vacio ese campo te marca error, comprobado.



A mi tambien me pasa algo parecido , a mi me deja dejar en blanco los campos not null no me respeta casi ninguna restriccion del campo ,por lo unico uqe me da error cuando estoy en phpmyadmin es cuando ser repite la clave primaria nada mas

gnzsoloyo 12/06/2009 16:01

Respuesta: De acuerdo
 
Cita:

Iniciado por arbi (Mensaje 2959556)
A mi tambien me pasa algo parecido , a mi me deja dejar en blanco los campos not null no me respeta casi ninguna restriccion del campo ,por lo unico uqe me da error cuando estoy en phpmyadmin es cuando ser repite la clave primaria nada mas

No resucites post viejos...

Postea la sentencia de creación y dinos con qué estás trabajando para el código.

arbi 12/06/2009 19:53

Respuesta: De acuerdo
 
Cita:

Iniciado por gnzsoloyo (Mensaje 2959794)
No resucites post viejos...

Postea la sentencia de creación y dinos con qué estás trabajando para el código.

Estoy trabajando con mysql5 pero el que viene en el paquete del xamp (que viene todo integrado el php5,apache5,mysql5..)


Ok mira te comento de las cosas que he hecho y mas o menos me han funcionado: respecto a lo de que no me cumplia casi ninguna restriccion (como por ejmplo dejar un campo int en blanco y me decia mysql:" warning... se han insertado x filas pero no cumplen las condiciones del tipo de dato...,o dejar una fecha en blanco y me la sustituia por unos ceros..., yo lo que queria era que no me dejase insertar el dato, no que me diese el mensaje de warning...).

El tema era que tenia que cambiar el "modo sql" que me arrancaba mysql el "sql-mode" ,en los tutoriales de mysql decia que pusiera en el archivo my.ini que esta en la carpeta de windows la linea : sql-mode="tipo de modo sql(traditional,strict-all-tables..." ,yo lo ponia pero no me afectaba para nada y era pq como tengo el xamp pues este cuando arranca el servicio de mysqld le carga un archivo de configuracion propio que se llama my.cnf que esta en mi caso: d:/xamp/mysql/bin/my.cnf es un archivo de texto... y nada insertando esa linea ahi si me da ya los errores en vez de los warnings ,poniendo el sql-mode="traditional" (en modo tradicional).

Y lo otro era lo de la restriccion del campo a not null que como era de tipo varchar pues al dejarlo en blanco lo interpreta como un dato mas ya que al dejarlo en blanco no es null sino blanco..., y nada habrá que controlar que el campo no este en blanco antes de enviarlo a al base de datos...






AHORA: ahora pues no doy con como poner la variable autocommit en off,escribo directamente en sql "set autocommit=off" y me lo acepta ,pero despues inserto una fila y le hago un rollback para deshacer los cambios y no se deshace nada de nada todo sigue igualito que estaba.Es mas si hago un "show variables" la varibale autocommit esta a on, que esta activada y nada ahi ya no se que hacer mas...


La zona horaria es GMT -6. Ahora son las 02:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.