我正在运行Spring Boot连接到PostgreSQL数据库。如果在数据库之后启动Spring Boot,我已验证数据已写入数据库。如何让Spring Boot自动重新连接到PostgreSQL?
spring.datasource.url = jdbc:postgresql://localhost/dbname
spring.datasource.username = user
spring.datasource.password = secret
spring.datasource.driver-class-name = org.postgresql.Driver
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
当有在开发数据库的变化,我碰上例外: PreparedStatementCallback; SQL []; This connection has been closed.; nested exception is org.postgresql.util.PSQLException: This connection has been closed.
注意,数据库访问时,再次发生异常;我认为问题在于连接已过时,因为它最初连接到的数据库端点由于重新启动而不再可用。重新启动Spring Boot可以解决问题。
如何配置Spring Boot重新连接到PostgreSQL,以便我不需要重新启动它?
我试图按照Spring Boot JPA - configuring auto reconnect和How to reconnect database if the connection closed in spring jpa?中的答案。我不确定PostgreSQL的行为是否与MySQL不同。我对Spring Boot documentation的阅读没有帮助;我不知道所描述的组件是否足够了解我应该查看哪些文档。
您正在使用哪个连接池?如果你不使用它,你可能想尝试切换到Hikari。在过去,我已经看到过这样的问题,它使用'tomcat-jdbc',这是当前的默认连接池。 –
您有借用测试,但您可能还希望在空闲和空闲超时时设置检查。这样,连接被定期检查并且如果无效则从池中移除。 –
@AndyWilkinson我想我使用的是tomcat-jdbc,因为我的pom包含spring-boot-starter-jdbc。 – mattm