无法使用 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或识别任何区域。