碰到ORA-01461
有批Access文件需要导入到Oracle中,程序写好执行发现这个问题:ORA-01461。
我使用的是Oracle 9i,驱动用的OracleClient,版本号是:v2.0.50727.数据库字符集编码是utf8.
Google吧~~~
发现有下面几种说法:
1:varchar2(4000)惹的货(我定义的字段长度改成50还是不对)
2:CLOB惹的货(我使用的不是这种类型)
3:Oracle 9i 的bug,在10g版本已经修复(升级数据库那是~~~~相当不靠普的事情)
4:本地注册表里Oracle的NLS_LANG项的值不对,应该是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK(我注册表的值是对的)
5:驱动程序有bug,需要用ODP.NET(根本不现实,改动太大)
大概就是上面几种说法,都没有解决我的问题,调试程序的时候发现插入英文和数字都没有问题,只有插入中文的时候才会出现:ORA-01461.这样就可以确定肯定是字符集的问题.既然注册表的里的值正确,应该是程序的字符集不对.将需要插入的中文进行转码:gb2312->utf8=错;gb2312->iso8859-1=错.![]()
后来发现连接字符串中有:Unicode=True.连接字符串可以不需要制定字符编码,所以去掉试试.
结果成功插入了中文,虽然问题解决了,还是不知道为什么有这句话就会不对.希望有高人路过可以指点一二,谢谢.
如果大家遇到ORA-01461,又没有上面几种问题,可以看看自己的连接字符串是否也有:Unicode=True,有的话就删掉吧![]()

浙公网安备 33010602011771号