场景

现在有一个这样的需求,有一张表,又一个字段原本用的varchar类型,但因为一些查询的需要需要改为json类型,表结构如下

CREATE TABLE `test_table` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',

`name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci default '' COMMENT '名称',

PRIMARY KEY (`id`)

) ENGINE = InnoDB COMMENT = '测试表';

模拟插入数据

insert into test_table (name)value ('["测试数据"]');

insert into test_table (name)value (null);

insert into test_table (name)value ('');

数据库中的数据如上图,现在进行转换json字段,修改失败了

ALTER TABLE test_table CHANGE name name JSON COMMENT '名称';

将存储的数据结构不为json的改成json结构后更新成功

update test_table set name = '[]' where name = '' or name is null;

ALTER TABLE test_table CHANGE name name JSON COMMENT '名称';

结论是vachar改json需要存量数据都是json格式才能进行变更

参考链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。