直接说答案:
没别的办法,这个参数设置初始化后是无法修改的。只能重新初始化一个新的数据库,参数设置时勾选varchar类型以字符为单位
,把原来的数据用DM数据迁移工具
导到新的库里。
原因分析:
正常情况下应用代码里的长度和数据库里设定的长度一样的情况下,内容是完全可以正常存进去的,因为代码里和数据库基本上都是按照字符长度计算的,但是达梦数据库的默认值并不是这样,他默认是按照字节长度计算的,所以同样是设定varchar(1000),在代码里截取1000个字符可能会存不进去,因为中文需要占用2(GBK)或3个(UTF8)字节,这就导致代码里的1000个字符没办法存到数据库中。
按照字符长度计算后,如果设定的是GBK编码达梦会自动留2倍长度,UTF8会自动留4倍长度(UTF8支持表情、占4个字节)。
可以通过查询语句确认你当前的参数设置:
SELECT NAME,VALUE
FROM V$PARAMETER
WHERE NAME = 'LENGTH_IN_CHAR';