警告:#1265第1行的列'pdd'截断数据

时间:2014-11-22 12:03:17

标签: mysql

我无法在PHPMYADMIN上将PDD(患者死亡日期)设置为null,直到死亡日期到来为止;同样在客户端,我可以检查NULL数据是否可以使用它。

有人可以建议我一个解决方案吗?

patientnhs_no   hospital_no sex     name    surname     dob     address     pls  pdd    
1001001001      6000001      m     john     smith   1941-01-01  Bournmouth  1    0000-00-00

(如果活着,PDD应为null或死亡时为死亡日期)

2 个答案:

答案 0 :(得分:11)

正如消息错误所示,您需要增加列的长度以适合您尝试插入的数据的长度(0000-00-00)

编辑1

根据你的评论,我运行一个测试表:

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)

插入:

mysql> insert into testDate values(1,'0000-00-00');
Query OK, 1 row affected (0.06 sec)

编辑2:

那么,你的意见是否想在pdd字段中插入NULL值? 你可以用两种方式做到这一点:

方法1:

mysql> insert into testDate values(2,'');
Query OK, 1 row affected, 1 warning (0.06 sec)

方法2:

mysql> insert into testDate values(3,NULL);
Query OK, 1 row affected (0.07 sec)

编辑3:

您未能更改pdd字段的默认值。下面是语法怎么做(在我的例子中,我在开始时将其设置为NULL,现在我将其更改为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

答案 1 :(得分:2)

您最有可能将字符串 'NULL'推送到表格,而不是实际的NULL,但其他事情也可能正在进行,例如:< / p>

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)