update 日期报错

【概述】SQL 错误 [1292] [22001]: Data truncation: Incorrect date value: ‘0000-00-00’
【背景】update tbs_m_cust_sg_brand_sum set c_date=concat(c_year,’-’,c_month,’-1’);

【现象】不能更新数据
【业务影响】
update在tidb4执行OK,5执行报错
【TiDB 版本】
v5.1.0
【附件】

1 个赞


c_date字段是V5.0.2升级到V5.1.0后新加的
ALTER TABLE tbs_m_cust_sg_brand_sum
ADD COLUMN c_date date NOT NULL COMMENT ‘年月’ AFTER c_no;

麻烦对比下二者的sql_mode

重现脚本:

CREATE TABLE test_2021070101 ( c_sort int );

INSERT INTO test_2021070101 VALUES (1);
INSERT INTO test_2021070101 VALUES (2);
INSERT INTO test_2021070101 VALUES (3);

ALTER TABLE test_2021070101 ADD COLUMN c_date date NOT NULL AFTER c_sort;

UPDATE test_2021070101
SET c_date = '2021-07-01';

增加字段进加上默认值就OK
ADD COLUMN c_date date NOT NULL default ‘1900-1-1’ COMMENT ‘年月’ AFTER c_no;

show variables like ‘%sql_mode%’,方便查下贴出来么

与sql_mode配置有关,请参考下面的链接
搜 no_zero_date
https://docs.pingcap.com/zh/tidb/stable/sql-mode#sql-模式