我的数据库服务器在x86_64-unknown-linux-gnu上运行PostgreSQL 9.4.1,数据库和应用服务器之间没有防火墙。
我需要tcp_keep活的吗?
为什么我的连接会在一定时间后中断,并且不再可以恢复?
#
# [ Database Configuration Section ]
#
spring.jpa.database=POSTGRESQL
spring.jpa.show-sql=false
hibernate.format_sql=true
hibernate.hbm2ddl.auto=validate
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.DefaultNamingStrategy
spring.datasource.platform=postgres
spring.database.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://*****:5434/******
spring.datasource.username=*****
spring.datasource.password=*****
logging.file=*******.log
logging.level.=WARNING
2015-09-29 11:58:50.598 INFO 10498 --- [nio-9092-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2015-09-29 11:58:50.598 INFO 10498 --- [nio-9092-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2015-09-29 11:58:50.674 INFO 10498 --- [nio-9092-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 76 ms
2015-09-29 19:23:03.777 WARN 10498 --- [ool-3-thread-16] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 08006
2015-09-29 19:23:03.779 ERROR 10498 --- [ool-3-thread-16] o.h.engine.jdbc.spi.SqlExceptionHelper : An I/O error occurred while sending to the backend.
2015-09-29 19:23:03.785 INFO 10498 --- [ool-3-thread-16] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements
2015-09-29 19:23:03.836 ERROR 10498 --- [ool-3-thread-16] o.s.orm.jpa.JpaTransactionManager : Commit exception overridden by rollback exception
java.net.SocketException: Connection timed out
at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_25]
at java.net.SocketInputStream.read(SocketInputStream.java:150) ~[na:1.8.0_25]
at java.net.SocketInputStream.read(SocketInputStream.java:121) ~[na:1.8.0_25]
at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:143) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:112) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:71) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:282) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1718) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:173) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
... 61 common frames omitted
Wrapped by: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:201) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:615) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:465) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:411) ~[postgresql-9.4-1202-jdbc41.jar!/:9.4]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208) ~[hibernate-core-4.3.11.Final.jar!/:4.3.11.Final]
... 57 common frames omitted
Wrapped by: org.hibernate.exception.JDBCConnectionException: could not execute statement
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
正如@Yuki Yoshida所说,答案就是这么简单。
我将spring.datasource.validation-query=select 1
spring.datasource.test-on-borrow=true
添加到我的配置中,它工作了。
借道测试:
TestonBorrow:默认值:true
在从池中借用对象之前是否验证对象的指示。如果对象验证失败,它将从池中删除,我们将尝试借用另一个对象。
和validationquery:default:对于大多数db语言选择1
其他请参阅此处
我遇到了一个关于从Spring Boot应用程序连接到MySQL的问题。部署后几个小时它都可以正常工作。但是当我停止我这边的任何活动(通常是在晚上)时,服务器会崩溃,例外情况如下: 我的申请。属性文件非常简单: 我想它可以连接到MySQL连接超时(如果我没弄错的话,默认值是8h)。我说得对吗?你能为我提供一些解决这种情况的方法吗?提前谢谢!
问题内容: 我有几个服务器进程,它们有时会响应来自客户端的消息并执行只读事务。 在服务器运行大约几天后,它们停止正常工作,当我检查发现有大量有关关闭连接的消息时。 当我检查出它时,发现默认情况下,hibernate模式在某种开发模式下起作用,在这种模式下,几个小时后连接被断开,我开始使用c3po进行连接池。 但是,即使使用c3po,在启动服务器后约24小时仍会出现此问题。 有没有人遇到过这个问题,
我正在尝试用docker-compose.yml连接MongoDb和Spring Boot。 就这样- 我的Dockerfile for Spring pom.xml插件用于构建JAR_FILE- application.properties文件 我的问题 当我运行“maven package”构建我的jar时,我得到以下错误:我的jar文件没有创建 当我运行docker-compose.yml时
为什么当我运行带有Java8、Spring Boot、Liquibase和Postgresql的项目时,我在我的postgres数据库中没有看到任何新的表?我安装了PostgreSQL 11.6,
我在运行的spring boot app for db2数据库中收到错误。重新启动应用程序时,连接开始工作。 如果收到或错误,则需要在运行时重新连接到数据库。 做这件事的最好方法是什么?我正在使用Hikari连接池,是否有一些属性允许数据库连接被检查..如果中断..然后重新连接。或者像@refreshScope这样的Spring Boot配置在配置更改后重新创建bean。在这种情况下,有什么spr
我正在运行一个Spring Boot应用程序来创建REST API。我经常会收到一个错误,说数据库连接关闭了,然后我就不能对应用程序进行任何调用。我在用Postgres数据库。这是完整的堆栈跟踪: 当我重新启动应用程序时,它就会消失。我认为当我重新启动我的postgres数据库时会出现这个问题。为什么会出现这种情况?