无法使用 IntelliJ 连接到 oracle 数据库,无法识别区域设置
Can't connect to oracle database with IntelliJ, Locale not recognized
我安装了Oracle Database 11g Express Edition,用PLSQL Developer可以正常连接本地数据库,但是用IntelliJ连接不上。它说无法识别区域设置。
在这里搜索了一些类似的问题后,解决方案是手动更改机器区域设置,我这样做并重新启动,但它仍然不起作用。而且我确定它真的改变了,因为现在,这行 java 代码:
System.out.println(Locale.getDefault())
打印了 en_US
.
现在我真的不知道是什么问题,为什么 PLSQL 可以工作而 IntelliJ 不能。
我正在使用 ojdbc6.jar 进行连接。
当我尝试连接下面的 java 代码时,抛出了同样类型的异常。
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SYSTEM", "password");
异常:
Exception in thread "main" java.sql.SQLException: Locale not recognized
at oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTIoauthenticate.java:1006)
at oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java:238)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at data_coonnections.DataConnector.main(DataConnector.java:15)
另外将格式(在控制面板 -> 时钟和区域 -> 区域 -> 格式)更改为英语(美国)确实有所帮助。
JDBC 瘦驱动程序使用 Java 的区域设置来更改您的数据库会话语言。例如,我是法国人,住在法国,当我从本地系统连接到美国的数据库时,我的数据库会话是法语的。为什么?那是因为我的 Locale 是这样配置的。如果 Oracle 无法识别您的语言环境,您始终可以将默认语言环境覆盖为其他内容。
您可以转到“高级”选项卡(参见您发布的图片),而不是更改 OS 的区域设置,然后向下转到“ VM 选项:" 字段。
输入 -Duser.language=en -Duser.region=US
。
您还可以设置-Duser.region=UK
或识别任何区域。
我安装了Oracle Database 11g Express Edition,用PLSQL Developer可以正常连接本地数据库,但是用IntelliJ连接不上。它说无法识别区域设置。
在这里搜索了一些类似的问题后,解决方案是手动更改机器区域设置,我这样做并重新启动,但它仍然不起作用。而且我确定它真的改变了,因为现在,这行 java 代码:
System.out.println(Locale.getDefault())
打印了 en_US
.
现在我真的不知道是什么问题,为什么 PLSQL 可以工作而 IntelliJ 不能。
我正在使用 ojdbc6.jar 进行连接。
当我尝试连接下面的 java 代码时,抛出了同样类型的异常。
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SYSTEM", "password");
异常:
Exception in thread "main" java.sql.SQLException: Locale not recognized
at oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTIoauthenticate.java:1006)
at oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java:238)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at data_coonnections.DataConnector.main(DataConnector.java:15)
另外将格式(在控制面板 -> 时钟和区域 -> 区域 -> 格式)更改为英语(美国)确实有所帮助。
JDBC 瘦驱动程序使用 Java 的区域设置来更改您的数据库会话语言。例如,我是法国人,住在法国,当我从本地系统连接到美国的数据库时,我的数据库会话是法语的。为什么?那是因为我的 Locale 是这样配置的。如果 Oracle 无法识别您的语言环境,您始终可以将默认语言环境覆盖为其他内容。
您可以转到“高级”选项卡(参见您发布的图片),而不是更改 OS 的区域设置,然后向下转到“ VM 选项:" 字段。
输入 -Duser.language=en -Duser.region=US
。
您还可以设置-Duser.region=UK
或识别任何区域。