为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:Windows Service 2012
【CPU】:
【问题描述】*:在执行某一条语句时,报错2665:记录超长
我通过替换某个字段的值,确定了是字段A的长度不够导致报错。
字段A的数据类型是varchar2,我将字段A的长度改为4000,10000,20000分别进行了insert语句的执行,均报该错误。
我使用select length('') from dual的方法,得出该字段内容实际才796的长度。
虽然字段的实际内容中含有大量中文描述,但是不至于才不到800的长度就无法插入了吧?这也太离谱了
--启用超长记录绕过
ALTER TABLE 表名 ENABLE USING LONG ROW;
字段大小是多少,插入记录如果大于字段设置大小也会报记录超长
查询页大小的方式:
SELECT '页大小', cast(PAGE()/1024 as varchar);
另外,如果字符集是utf-8,一个中文占3个字节。
还要考虑到其它字段占用的空间。
结论:
4k的页大小:中文varchar最多630左右;
8k的页大小:中文varchar最多1300左右;
找到你要存储的表,右键-存储选项-超长记录-启用超长记录;然后再试试。
这个不是某个字段定义超长,是所有字段的定义加起来超过了页大小的一半