SpringBoot项目启动Application报错——ojdbc8驱动升级后不兼容中文用户名导致

SpringBoot项目,Application启动时报错,错误信息如下:

ERROR c.alibaba.druid.pool.DruidDataSource - [] init datasource error, url: jdbc:oracle:thin:@10.0.0.6:1521/cba

java.sql.SQLRecoverableException: IO 错误: Undefined Error
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:774)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)......

问题相当奇怪,其他同事直接从git上检出代码能直接运行,只有我的电脑不行,百思不得其解,前后耗时大约10个小时,通过不断调试终于找到原因,特此记录一下。

1.数据库连接时有一个参数:oracle.jdbc.v$session.osuser,取值为System.getProperty("user.name")

2.我的win10系统设置的用户名是中文的。

ojdbc不能很好的兼容中文,导致了这个连接问题。

解决方案:

1.启动时增加代码:System.setProperty("user.name", "English Name");

2.修改操作系统用户名为英文名,不要包含中文。

总结:在使用国外的软件或者jar包时,尽量避免中文,包括文件路径也尽量不要包含中文,可以减少很多麻烦。

posted @ 2020-01-02 13:16  wewalk  阅读(2076)  评论(0编辑  收藏  举报