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包時,盡量避免中文,包括文件路徑也盡量不要包含中文,可以減少很多麻煩。