碰到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,有的话就删掉吧

posted @ 2008-10-09 11:00  ppei  阅读(2286)  评论(0)    收藏  举报