解决达梦数据库新增大字段报错问题(不能同时包含聚集大字段)

使用场景

在已经建好的数据表中新增一个clob类型(大字段都报错,包括text类型)的字段报错,报错信息如下所示:
在这里插入图片描述
出现这种问题的原因是当我们在建表时,选择主键,达梦数据库会默认将主键设置为聚集索引,而一旦表创建成功,再向该表增加大字段类型就会报错,所以解决办法就是怎么去除聚集索引.

解决方法

一.建表时

如果是建表时直接新增一列则没问题,我们以TEXT类型为例,两张表的建表语句如下

CREATE TABLE "GFSTACK"."TABLE_2"
(
"COLUMN_1" VARCHAR(50) NOT NULL,
CLUSTER PRIMARY KEY("COLUMN_1")) STORAGE(ON "MAIN", CLUSTERBTR) ;


CREATE TABLE "GFSTACK"."TABLE_3"
(
"COLUMN_1" VARCHAR(50) NOT NULL,
"COLUMN_2" TEXT,
NOT CLUSTER PRIMARY KEY("COLUMN_1")) STORAGE(ON "MAIN", CLUSTERBTR) ;

注意两张表的区别在于一个是“CLUSTER PRIMARY KEY”,一个是“NOT CLUSTER PRIMARY KEY”,如果建表时指定“NOT CLUSTER PRIMARY KEY”则可以随时添加大字段.
如果是通过DM管理工具界面建表,主键是不会指定“CLUSTER”或“NOT CLUSTER”的,直接就是“PRIMARY KEY”,这个时候就需要手动修改达梦数据库配置了,有三种方法:
1.关闭默认主键指定CLUSTER数据库参数,动态参数无需重启数据库(客户端需断开重新连接)

sp_set_para_value(1,'PK_WITH_CLUSTER',0);

之后再创建表就不会自动指定主键列为聚集索引了.

2.修改dm.ini配置文件,将“PK_WITH_CLUSTER”配置为0即可,修改后重启数据库实例,如果不行重启服务器
在这里插入图片描述
3.通过DM控制台工具修改一样
在这里插入图片描述

二.表已存在,不能删除重新建表

我们在日常使用中大部分遇到的都是这种情况.如果表已经存在且已经有了数据不能再重新创建表,这时候就比较麻烦了步骤如下所示
1.先创建一个新字段

alter table  LU_ACTIVITIES  add test VARCHAR

2.在新字段上创建一个聚集索引(会自动将主键上的聚集索引变为非聚集索引)

CREATE cluster INDEX test_index ON  LU_ACTIVITIES (test);

其中test_index为索引名称,LU_ACTIVITIES为表名,test为字段名
3.然后删掉刚创建的聚集索引

drop index test_index

4.删除新加字段

ALTER TABLE LU_ACTIVITIES
DROP COLUMN test

这样问题就解除了,可以随意增加大字段了

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值