Clara, parte de nuestro equipo de trabajo, nos hizo el favor de redactar este post ya que domina muy bien dicho tema.
Solución:
Como dice el mensaje de error, debe aumentar la longitud de su columna para que se ajuste a la longitud de los datos que está tratando de insertar (0000-00-00)
EDITAR 1:
Siguiendo tu comentario, ejecuto una tabla de prueba:
mysql> create table testDate(id int(2) not null auto_increment, pdd date default null, primary key(id));
Query OK, 0 rows affected (0.20 sec)
Inserción:
mysql> insert into testDate values(1,'0000-00-00');
Query OK, 1 row affected (0.06 sec)
EDITAR 2:
Entonces, aparentemente desea insertar un valor NULL para pdd
campo como dice su comentario? Puedes hacerlo de 2 maneras como esta:
Método 1:
mysql> insert into testDate values(2,'');
Query OK, 1 row affected, 1 warning (0.06 sec)
Método 2:
mysql> insert into testDate values(3,NULL);
Query OK, 1 row affected (0.07 sec)
EDITAR 3:
No pudo cambiar el valor predeterminado de pdd
campo. Aquí está la sintaxis de cómo hacerlo (en mi caso, lo configuré en NULL al principio, ahora lo cambiaré a NOT NULL)
mysql> alter table testDate modify pdd date not null;
Query OK, 3 rows affected, 1 warning (0.60 sec)
Records: 3 Duplicates: 0 Warnings: 1
Lo más probable es que esté empujando un string'NULL'
a la mesa, en lugar de un verdadero NULL
pero también pueden estar sucediendo otras cosas, una ilustración:
mysql> CREATE TABLE date_test (pdd DATE NOT NULL);
Query OK, 0 rows affected (0.11 sec)
mysql> INSERT INTO date_test VALUES (NULL);
ERROR 1048 (23000): Column 'pdd' cannot be null
mysql> INSERT INTO date_test VALUES ('NULL');
Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> show warnings;
+---------+------+------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------+
| Warning | 1265 | Data truncated for column 'pdd' at row 1 |
+---------+------+------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM date_test;
+------------+
| pdd |
+------------+
| 0000-00-00 |
+------------+
1 row in set (0.00 sec)
mysql> ALTER TABLE date_test MODIFY COLUMN pdd DATE NULL;
Query OK, 1 row affected (0.15 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> INSERT INTO date_test VALUES (NULL);
Query OK, 1 row affected (0.06 sec)
mysql> SELECT * FROM date_test;
+------------+
| pdd |
+------------+
| 0000-00-00 |
| NULL |
+------------+
2 rows in set (0.00 sec)
Agradecemos que quieras añadir valor a nuestro contenido tributando tu veteranía en las críticas.