我有一个简单的表,其中包含一个 json 字段和一个从 json 中的值生成的字段:
create table foo (
id integer primary key auto_increment
, somedata json
, a_date datetime generated always as convert(somedata->>theDateAsAString, datetime))
);
当我尝试插入一些数据时,出现错误:
insert into foo(somedata) values ('{"theDateAsAString":"2017-08-23T23:00:00.000Z"}');
ERROR 1292 (22007): Truncated incorrect datetime value: '2017-08-23T23:00:00.000Z'
但是,如果我删除生成的列,添加上述数据,然后更改表以添加列,我不会收到此类错误,并且该字段将按应有的方式显示。为什么?
我尝试通过在 my.cnf 中设置 NO_ZERO_DATE 和 NO_ZERO_IN_DATE 从 SQL 模式中删除它,重新启动并使用SHOW VARIABLES LIKE 'sql_mode'
.