报错如下:"AGENT_ENTITY_NAME"的值太大(实际值:60,最大值:50)
原因:oracle数据库表中AGENT_ENTITY_NAME字段的长度为50,由于varhcar2单位默认是byte,而一个中文对应按utf8占3个字节的话,20个中文,长度就是60了。
解决办法:将AGENT_ENTITY_NAME字段的类型改为nvarchar2
alter table 表名 modify AGENT_ENTITY_NAME NVARCHAR2(50);
问题解决
oracle VARCHAR2和NVARCHAR2的区别:
VARCHAR2(size type),size最大为4000,type可以是char也可以是byte,不标明type时默认是byte(如:name VARCHAR2(60))。
"ID" VARCHAR2(50 BYTE) NOT NULL PRIMARY KEY,
NVARCHAR2(size),size最大值为2000,单位是字符。
注意:
NVARCHAR2(size),size最大值为2000,单位是字符,而且不管是汉字还是字母。所以nvarchar2类型的数据最多能存放2000个汉字,也最多只能存放2000个字母。并且NVARCHAR2不受数据库字符集的影响。
VARCHAR2最多存放4000字节的数据,最多可以可以存入4000个字母字符,或最多存入2000个汉字(数据库字符集编码是GBK时,varchar2最多能存放2000个汉字,数据库字符集编码是UTF-8时,那就最多只能存放1333个汉字)。
在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3个字节。
中文注意要用NVARCHAR2。