PostgreSQL上的FlywaySqlException:无法创建PoolableConnectionFactory(错误:由于用户请求而取消语句

时间:2019-11-14 12:12:22

标签: java postgresql flyway

当我的微服务启动时,我正在使用flyway来创建/更新架构。 在某些情况下,当我启动服务时,会出现以下异常:

Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (ERROR: canceling statement due to user request)
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2294) ~[commons-dbcp2-2.1.1.jar:2.1.1]
    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2039) ~[commons-dbcp2-2.1.1.jar:2.1.1]
    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533) ~[commons-dbcp2-2.1.1.jar:2.1.1]
    at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:56) ~[flyway-core-5.2.1.jar:na]
    ... 37 common frames omitted
Caused by: org.postgresql.util.PSQLException: ERROR: canceling statement due to user request

我检查了postgres(9.6)日志,并看到了验证查询和错误消息:

2019-11-13 20:47:49 IST batch 31002  ERROR:  canceling statement due to user request
2019-11-13 20:47:49 IST batch 31002  STATEMENT:  select 1 as test

我查看了BasicDataSource,并在func validateConnectionFactory(connectionFactory)中引发了Java错误。 我不确定为什么,但是我正在使用的验证查询(选择1作为测试)失败了。我的ValidationQueryTimeout设置为2。

我猜测验证查询会花费更多时间,因为我尝试使用另一个验证查询作为测试(选择pg_sleep(10)),并且得到了完全相同的错误。数据库是否有可能终止此连接?我的系统负载不大,在此流程中它似乎是空闲的,因此资源无法解决问题。

0 个答案:

没有答案