我正在处理Spring批处理项目,同时连接到postgresql数据库我收到了波纹管错误。
java.sql.SQLException:方法org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int)尚未实现。
如何解决这个问题,请帮助我。 我正在使用postgres 9.4-1201-jdbc41驱动程序版本 和Spring jdbc 4.1.4.RELEASE
Stack trace
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: java.sql.SQLException: Method org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int) is not yet implemented.
at org.postgresql.Driver.notImplemented(Driver.java:753)
at org.postgresql.jdbc2.AbstractJdbc2Statement.setQueryTimeout(AbstractJdbc2Statement.java:668)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setQueryTimeout(NewProxyPreparedStatement.java:1800)
at org.springframework.jdbc.datasource.DataSourceUtils.applyTimeout(DataSourceUtils.java:275)
at org.springframework.jdbc.core.JdbcTemplate.applyStatementSettings(JdbcTemplate.java:1399)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:639)
... 37 more
]
Execution failure Stack trace: [org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT * FROM patient where id =? ]; SQL state [0A000]; error code [0]; Method org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int) is not yet implemented.; nested exception is java.sql.SQLException: Method org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int) is not yet implemented.]
答案 0 :(得分:1)
错误消息很明确。它尚未实现,因此要么找到 的新驱动程序,要么不存在,请不要使用该方法。
最新,最先进的驱动程序是JDBC42 Postgresql Driver, Version 9.4.1209。如果它不能解决这个问题,那么你就无法使用该方法。
之前看起来像this was an issue,并且是在连接池中使用测试查询引起的。在最新的驱动程序中实现了它,但无论如何都不应该使用测试查询,因为Connection.isValid()
方法明确用于测试有效性。