我有一个带有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,然后重新启动并使用SHOW VARIABLES LIKE 'sql_mode'
进行验证。
答案 0 :(得分:0)
经过大量的实验,我尝试在生成的列的定义中使用str_to_date
,这样做没有错误!