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包时,尽量避免中文,包括文件路径也尽量不要包含中文,可以减少很多麻烦。