java開發的平台項目,用odbc連接postgresql數據庫,有遇到java.sql.SQLException: Io 異常: Connection reset的報錯,嘗試解決
1、問題原因
當數據庫連接池中的連接被創建而長時間不使用的情況下,數據庫會自動回收該連接,但是客戶端並不一定知道,在進行數據庫操作時仍然使用的是老的無效的連接,這樣就會導致客戶端程序報錯“java.sql.SQLException: Io 異常: Connection reset”或者“java.sql.SQLException 關閉的連接”
2、嘗試解決問題的思路
- 會先考慮配置的數據庫連接池的連接數是不是不夠用,如果是則需要對連接池的最大、最小以及空閑連接數等做調整;
- 數據庫的連接池中的連接長時間不用被數據庫回收后斷開,而客戶端不知道,這樣的話可以考慮配置對連接池的連接進行有效的檢查,如配置有效性連接檢查的sql語句,經常能看到“select 1 from dual”或者“spring.jta.atomikos.datasource.test-query=select 1”這樣的語句