Play Framework v1.5连接PostgreSQL数据库报错求助
解决Play Framework v1.5连接PostgreSQL时的
isValid(int)未实现错误 这个问题我之前帮同事排查过,核心原因是Play 1.5默认会用JDBC 4.0的isValid(int)方法校验数据库连接有效性,但你当前使用的PostgreSQL JDBC驱动版本太旧,还没实现这个方法,所以触发了报错。
给你两个可行的解决办法:
方案一:升级PostgreSQL JDBC驱动版本
早期的PostgreSQL JDBC驱动(比如jdbc4系列的旧版本)确实没有实现Jdbc4Connection.isValid(int)方法,你可以把驱动升级到9.1及以上版本——从这个版本开始,PostgreSQL驱动已经完整支持JDBC 4.0的所有接口,包括isValid方法,升级后就能直接解决问题。
方案二:指定自定义连接验证查询(无需升级驱动)
如果暂时没法升级驱动,你可以在application.conf里添加db.validationQuery参数,让Play框架通过执行一条简单SQL来校验连接,而非调用未实现的isValid方法。修改后的配置如下:
db.url=jdbc:postgresql:test db.driver=org.postgresql.Driver db.user=test db.pass=123 # 添加这条配置,用SQL查询替代JDBC4的isValid检查 db.validationQuery=SELECT 1
当Play框架检测到validationQuery配置时,会优先执行这条SQL验证连接状态,绕开未实现的isValid方法,自然就不会再抛出错误了。
内容的提问来源于stack exchange,提问作者David Navarro Astudillo
相关产品推荐
相关产品推荐

