mysql - FlyWay 连接关闭后不允许操作
问题描述
我尝试使用 FlyWay 6.0.Beta2 BaseJavaMigration 和 Mysql
@Slf4j
public class V1_7__ini_cf_template_2019_07_1 extends BaseJavaMigration {
@Override
public void migrate(Context context) throws Exception {
log.info("111");
try (Connection connection = context.getConnection()) {
log.info("222");
try (PreparedStatement statement = connection.prepareStatement(
"insert into console.customers_settings (settings_customer_id, start_balance, max_balance_allowed, max_instance_allowed) values (?, ?, ?, ?)")) {
log.info("333");
statement.setLong(1, 3);
statement.setBigDecimal(2, new BigDecimal(100));
statement.setBigDecimal(3, new BigDecimal(200));
statement.setBigDecimal(4, new BigDecimal(300));
statement.executeUpdate();
}
}
}
}
出于某种原因,我收到一个错误
无法回滚事务 java.sql.SQLNonTransientConnectionException:连接关闭后不允许任何操作。
和一个类型的请求。好好工作
https://flywaydb.org/getstarted/java
public class V3__Anonymize extends BaseJavaMigration {
public void migrate(Context context) throws Exception {
try (Statement select = context.getConnection().createStatement()) {
try (ResultSet rows = select.executeQuery("SELECT id FROM person ORDER BY id")) {
while (rows.next()) {
int id = rows.getInt(1);
String anonymizedName = "Anonymous" + id;
log.info(anonymizedName);
}
}
}
}
}
}
可能是什么原因
解决方案
不要将 -once 放在Connection connection = context.getConnection()
里面,try
一旦完成,连接将在 Flyway 引擎完成之前关闭。通过一些额外的日志记录,您可以看到您的异常在迁移完成后发生。
如果您在此处查看示例:https ://flywaydb.org/documentation/migrations#java-based-migrations您将看到该语句已关闭,但连接未关闭。
推荐阅读
- java - 如何在 Spring Boot 上返回 JSONObject?
- soap - node-soap 将命名空间添加到信封
- c++ - 当我尝试在 C++ 中使用 SDL_RenderCopy 复制纹理时出现错误
- facebook - React Native Facebook SDK ShareDialog 要求再次登录
- java - 如何将我的 JavaFX 图形放入 JFrame?
- xml -
- php - PHPMailer - 向存储在 mySQL 数据库中的地址发送多封电子邮件
- database - 用于在 GB 规模(流式和静态)数据集上查询和警报的技术堆栈
- python - 如何生成 N 个整数(比如 365),总和为某个值 K(比如 20)?
- python - python 浮点数列表,总和为 1.0,但 (sum(list) == 1.0) 给出 False。为什么?