das*_*asp 23 oracle jdbc nls ora-12705
我正在使用瘦Oracle JDBC驱动程序版本10.2.0(ojdbc14.jar).我想手动配置其NLS_LANG设置.有办法吗?
目前,它从VM变量user.language(通过设置当前区域设置或从系统环境启动时自动设置)获取此设置.
当用户将应用程序区域设置切换到Oracle JDBC驱动程序不支持的区域设置(例如mk_MK)时,这是一个问题.在这种情况下,下次我获取连接时,我得到以下异常:
ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified
我可以在获取连接之前动态更改语言环境,然后来回切换回用户选择的语音,但这看起来不那么优雅且效率低下.
Mic*_*las 17
另请参阅:https://serverfault.com/questions/63216/ora-12705-cannot-access-nls-data-files-or-invalid-environment-specified/64536
对我来说,最好的回应是由FoxyBOA调用java app:
-Duser.country=en -Duser.language=en
Run Code Online (Sandbox Code Playgroud)
Ada*_*kes 13
NLS_LANG设置派生自java.util.Locale.因此,在连接之前,您需要进行类似的调用:
Locale.setDefault(Locale.<your locale here>);
Run Code Online (Sandbox Code Playgroud)
小智 9
我遇到了同样的问题,发现瘦的jdbc Oracle驱动程序不需要指定NLS_LANG或系统区域设置.但是当你连接到非英语数据库时,你将在类路径中拥有orai18n.jar.
来自Oracle®DatabaseJDBC Developer's Guide and Reference
提供全球化支持
基本的Java Archive(JAR)文件ojdbc5.jar和ojdbc6.jar包含所有必需的类,以便为以下方面提供完整的全球化支持:
- 未作为Oracle对象或集合类型的数据成员检索或插入的CHAR,VARCHAR,LONGVARCHAR或CLOB数据的Oracle字符集.
- 对象和集合的CHAR或VARCHAR数据成员,用于字符集US7ASCII,WE8DEC,WE8ISO8859P1,WE8MSWIN1252和UTF8.
要在对象或集合的CHAR或VARCHAR数据成员中使用任何其他字符集,必须在应用程序的CLASSPATH环境变量中包含orai18n.jar.
使用以下工作为我调用java:
-Duser.country=us -Duser.language=en
Run Code Online (Sandbox Code Playgroud)
如果国家的"en"也导致ORA-12705.
| 归档时间: |
|
| 查看次数: |
60542 次 |
| 最近记录: |