暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

错误码 [2665]: 记录超长

原创 达梦 2021-01-31
1204

【问题原因】

DM 中记录长度不能超过页大小的一半。

【解决方法】

DM 在初始化的时候,默认的页大小是 8 KB,也就是说一个表一条记录的所有的字段的总长度不能超过 4 KB。选择的页大小影响后面表每行数据的长度,表每行的长度之和(普通数据类型)不能超过一页大小,如果超过 1 页大小即报记录超长的错误,

考虑实际场景选择:

  1. 找到表中 varchar 类型比较长的(如 varchar2(8000)这种),修改成 text 类型;
  2. 把页大小改为 16 KB 或者 32 KB。这是一个底层参数,在数据库生命周期内都不能更改,所以必须重新初始化。(对于表中 varchar2 类型较长,并且字段较多的情况不太适合,这种情况采用方法 1 解决。)
  3. 考虑使用大字段,大字段是不参与上述描述计算的。大字段长度能够达到 2 GB。但是要注意,大字段的使用和普通字段是有区别的。详情可以参考相关文档。

举例说明:

比如安装时页大小为 8 kB,那么一行记录的长度除大字段外所有列加起来不能超过 4 kB。

select page(); --8192
create table test(c1 int,c2 varchar(2000),c3 varchar(2000),c4 varchar(2000)); --可创建成功
insert into test values(1,LPAD('a',2000),'a','a'); --未超过 4 kB,可以插入成功
insert into test values(2,LPAD('a',2000),LPAD('a',2000),'a'); --超过 4 kB,报错:记录超长
update test set c3=LPAD('a',2000) where c1=1; --更新操作导致记录超长,报错
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论