我有一个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驱动程序则不是,因此它们在同一环境中的工作方式有所不同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top