我需要在 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
最佳答案
严格模式会影响服务器是否允许“0000-00-00”作为有效日期:如果未启用严格模式,则允许“0000-00-00”并且插入不会产生警告。如果启用严格模式,则不允许使用“0000-00-00”并且插入会产生错误,除非同时给出 IGNORE。对于 INSERT IGNORE 和 UPDATE IGNORE,允许使用“0000-00-00”,并且插入会产生警告。
您需要禁用日期严格模式或需要从 bdate
列中删除 not null
。
为什么会发生这种情况?
您说 bdate 不为空,这意味着所有旧记录都将填充默认日期,因为在您的情况下启用了严格日期模式,这意味着您的 bdate 值默认为 0000-00-00
将变得无效,服务器将抛出您所看到的错误。
虽然修复数据库端可能不是一个好主意,但如果可能的话,在应用程序层
中进行总是更好。
关于mysql - 在 InnoDB 表 MySQL 数据库中创建日期字段时日期值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50912369/