代码数据库在插入数据的时候有可能会遇到报错:-2665记录超长。该错误原因主要是因为在达梦数据库中数据记录的长度不能超过也大小的一半。DM数据库专栏
达梦数据库在初始化实例的时候,默认的页大小是 8 KB,也就是说一个表一条记录的所有的字段的总长度不能超过也大小的一半,也就是 4 KB。所以页大小影响后面表每行数据的长度,表每行的长度之和(普通数据类型)不能超过一页大小,如果超过 1 页大小即报记录超长的错误。
我们来举个实际的案例,比如安装时页大小为 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; --更新操作导致记录超长,报错
达梦数据库的页大小在整个实例生命周期都不能修改,除非重建实例。一半来说重建实例,进行数据的整体迁移是个比较好的选择,可以避免后期因为页大小限制带来的存储长度不够的问题。当然,也可以通过启动表的超出记录功能来取消限制。