我正在尝试将数据插入数据库。在插入数据时,我从vert得到一个问题。x说
vertx 4.4.0 error => io/vertx/sqlclient/ClosedConnectionException
vertx 4.3.8 error => Fail to read any response from the server, the underlying connection might get lost unexpectedly.
这个<<p> strong>误差每次在数据库中插入时都发生。但是正在从DB中读取
public static MSSQLPool createMssqlDbPool(Vertx vertx, DbConfig dbConfig) {
MSSQLConnectOptions connectOptions = new MSSQLConnectOptions()
.setHost(System.getenv().getOrDefault("DB_HOST", dbConfig.getHost()))
.setPort(Integer.parseInt(System.getenv().getOrDefault("DB_PORT", dbConfig.getPort())))
.setDatabase(System.getenv().getOrDefault("DB_NAME", dbConfig.getDatabase()))
.setUser(System.getenv().getOrDefault("DB_USER", dbConfig.getUser()))
.setPassword(System.getenv().getOrDefault("DB_PASSWORD", dbConfig.getPassword()));
// Pool options
PoolOptions poolOptions = new PoolOptions()
.setMaxSize(5);
LOG.info("DB connection : {}", connectOptions.toJson());
return MSSQLPool.pool(vertx, connectOptions, poolOptions);
}
我已经尝试了很多东西
- 我将超时时间从3秒增加到5分钟,但仍然得到相同的错误。
- 我试着为DB创建一个新用户,仍然不起作用。
- 我尝试更改mssql-client版本。
- 当我在较低的环境中运行相同的代码时,它的工作很好。它只在生产时给出错误。所以我不确定我们是否需要这样做代码的变化或者数据库端应该有一些变化。
现在我把选项,为什么它不工作。你能帮帮我吗?
我找到了两个解决方案。
- 我们可以减少版本的mssql-client在vert。x升级到4.3.1,与当前RDS版本15.00.4073.23.v1兼容。
- 或者,我们可以保留vert的msql -client版本。将生产数据库的RDS版本升级到15.00.4236.7.v1。
兼容性图表
Ms-sql Client 4.3.8 RDS(Sql server) 15.00.4236.7.v1
4.3.1 15.00.4073.23.v1