如何在春季测试中使用 liquibase 解决“已经有太多客户”的问题?

Posted

技术标签:

【中文标题】如何在春季测试中使用 liquibase 解决“已经有太多客户”的问题?【英文标题】:How to resolve problem "too many clients already" with liquibase in spring tests? 【发布时间】:2019-07-08 05:19:26 【问题描述】:

在我的 spring-boot 应用程序中运行所有测试时,我得到 liquibase.exception.DatabaseException: org.postgresql.util.PSQLException: FATAL: 抱歉,客户端已经太多了。此异常在最后几个测试中引发 也许有人知道如何在不创建池的情况下管理 liquibase 中的连接? 项目中没有配置池。 通过“扩展 CrudRepository”对数据库的所有查询

liquibase.exception.DatabaseException: org.postgresql.util.PSQLException:致命:对不起,客户端太多 已经。

【问题讨论】:

【参考方案1】:

AFAIK Liquibase 使用一个连接。可能还有另一个问题。您的 postgresql 数据库设置是什么?

尝试选择所有活动连接并查看它们的来源:

SELECT * FROM pg_stat_activity

显示最大连接数

SELECT * FROM pg_settings WHERE name = 'max_connections';  

SHOW max_connections;

如果太低,可以在postgresql.conf增加,然后重启db

【讨论】:

我已经做了好几次了。这是没有出路的。谢谢。 所以你的测试中可能存在连接泄漏 不应该。看起来对于每个测试,连接都会创建,但不会关闭。

以上是关于如何在春季测试中使用 liquibase 解决“已经有太多客户”的问题?的主要内容,如果未能解决你的问题,请参考以下文章

Liquibase 无法找到用于 4.0 及更高版本的集成测试的更改日志文件

如何使用 Liquibase 强制列顺序?

如何使用@WebMvcTest 春季测试在模拟服务中注入模拟的restTemplate

使用 H2 数据库和 Liquibase 配置 Spring Boot

使用 liquibase 构建测试脚本以使用普通脚本按顺序执行

MockMVC - 如何使用 org.hamcrest.Matcher 在春季安全集成测试中检查 JWT 令牌的内容