在InnoDB表MySQL数据库中创建Date字段时,日期值不正确

时间:2018-06-18 14:59:36

标签: mysql innodb

我需要在InnoDB表中创建一个日期字段,但是我收到了这个错误

ALTER TABLE `tbl_name`  ADD `bdate` DATE NOT NULL  AFTER `another_field`;
MySQL said: Documentation
#1292 - Incorrect date value: '0000-00-00' for column 'bdate' at row 1

2 个答案:

答案 0 :(得分:0)

严格模式会影响服务器是否允许'0000-00-00'作为有效日期:如果未启用严格模式,则允许使用'0000-00-00'并且插入不会产生警告。如果启用了严格模式,则不允许使用'0000-00-00',并且插入会产生错误,除非同时给出了IGNORE。对于INSERT IGNORE和UPDATE IGNORE,允许使用'0000-00-00'并且插入会产生警告。

您需要停用日期严格模式,或者需要从not null列中移除bdate

为什么会这样?

您说bdate不为空,这意味着所有旧记录都会填充默认日期,因为在您启用strict date mode的情况下,这意味着您的bdate值默认为0000-00-00无效,服务器将抛出您看到的错误。

虽然修复数据库方面可能不是一个好主意,但如果可能的话,最好在App layer进行。

答案 1 :(得分:0)

如果您的表已有行,则无法使用NOT NULL添加新列。

创建没有NOT NULL限制的列,然后用数据填充列,然后添加NOT NULL限制。

或添加DEFAULT值的列。