我需要在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
答案 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
值的列。