## 问题描述:
今天朋友问我一个对已有的表添加JSON数据类型的字段报错的问题,表的结构很复杂,我简化了一下,并尝试复现了这个问题:
首先,创建一个表,语句如下:
CREATE TABLE "CONFIG_TABS"
(
"ID" INTEGER NOT NULL
);
复制
然后,给这个表添加一个JSON数据类型的字段,语句如下:
ALTER TABLE "CONFIG_TABS" ADD COLUMN "CONFIG_INFO" JSON;
复制
结果:哦吼,它报错了。
具体报错信息是:-3719 非法的基类名[JSON]
如下图:
但是,达梦明明是支持JSON数据类型的,如下图:
这是为什么呢?
## 解决过程:
网上查询一番,在达梦官网的技术手册中找到了答案,如下图:
原来,JSON是嵌套了各种数据类型来使用的。
它其中可以嵌套“字符串 string、数字 number、布尔值 true 和 false、 null、对象 object 和数组 array”。
按照这个说明,既然我添加的字段中JSON嵌套的内容是字符串string,那么按照手册中的示例修改添加字段的语句如下:
ALTER TABLE "CONFIG_TABS" ADD COLUMN "CONFIG_INFO" VARCHAR2(100) CHECK (CONFIG_INFO IS JSON(LAX));
复制
再次执行,成功。
## 波澜再起
貌似问题到这里就圆满了,我给朋友回复了这个结果。
然后他给我回了下面这个截图,事情再次陷入了被动。
如下图:
他在另一套达梦实例中,用之前直接添加JSON数据类型字段报错的那条语句居然执行成功了。
我陷入了长时间的静止,这一点都不振奋。
那么,谁能解释下这个现象呢?
## 补充下版本信息:
我的环境:
朋友的环境:
期待一个权威的解答。
文章
阅读量
获赞