从perl插入多级字符时击中ORA-01461
题
我有一个Perl脚本,该脚本将记录从文本文件插入到我们的数据库中。每当记录具有“Rodr_í_Guez”之类的多重字符时。我收到错误的ORA-01461,但是我远没有4000个字符从varchar2切换到长
环境:
$ENV{NLS_CHARACTERSET} = 'AL32UTF8';
在连接之前似乎没有帮助。
使用Java客户端(Squirrel SQL)并手动将插入内容写入语句中,将记录插入正常,因此我确定这不是数据库配置的方式。
有什么想法吗?
解决方案
您可能想设置NLS_LANG环境变量。对于Unix-ish系统,有一个脚本在$ oracle_home/server/bin中提供 nls_lang.sh
基于Lang环境变量,为您的系统输出合理的值。
例如,我的系统(lang = en_gb.utf-8)等效的甲骨文设置为
NLS_LANG=ENGLISH_UNITED KINGDOM.AL32UTF8
更多信息: http://forums.oracle.com/forums/thread.jspa?threadid=381531
Sergiusz在那里的帖子几乎说了您需要知道的所有内容:我只是补充说,Perl dbd :: Oracle驱动程序是基于OCI的,而Pure-Java JDBC驱动程序则不是,因此它们在同一环境中的工作方式有所不同。
不隶属于 StackOverflow