当前位置: 首页 > news >正文

flyway执行无限等待

目录

前言

migration

CONCURRENTLY

造成的原因

根本原因

现象

解决方式

方法1(官方推荐)

方法2

方法3(更稳定)


前言

很多团队在用Flyway + PostgreSQL做数据库迁移时,都遇到过一个非常诡异的问题:

  • flyway migrate一直卡住

  • 没有报错

  • 数据库 CPU / IO 都很低

  • 日志也没有异常

看起来就像Flyway 死锁了

如果你的 migration 里用了CONCURRENTLY创建索引,那你很可能踩中了 Flyway 的一个经典坑。

migration

**Migration(数据库迁移)**在软件开发里指的是:

用代码的方式管理数据库结构的变更。

简单说就是:

数据库结构的“版本升级”。

CONCURRENTLY

CONCURRENTLY是 PostgreSQL 里的一个关键字,意思是:

并发执行(不锁表)

最常见用在 创建索引和删除索引 时,让数据库在操作期间 仍然可以读写数据。

造成的原因

1.在线索引+flyway卡住

2.两个migration 并且都是非事务 SQL

典型场景: 1️⃣ 第一个 migration 是 非事务 SQL -- flyway:executeInTransaction=false CREATE INDEX CONCURRENTLY idx_a ON table_a(col); 2️⃣ 第二个 migration 也是 非事务 SQL -- flyway:executeInTransaction=false CREATE INDEX CONCURRENTLY idx_b ON table_b(col); 运行: flyway migrate 结果: 第一条执行成功 第二条开始后一直卡住 不会报错 不会结束 看起来像:卡住

根本原因

Flyway 9 的锁机制

Flyway 9.x + PostgreSQL 在线索引卡住的根本原因: Flyway schema lock + PostgreSQL CONCURRENTLY 需要等待事务 + migration 连接未释放 = 第二个 migration 无限等待

现象

  • migration 一直卡住

  • 没有报错

  • 数据库 CPU、IO 都很低

  • 日志也没有任何异常

解决方式

方法1(官方推荐)

把在线索引放在单独 migration

-- flyway:executeInTransaction=false CREATE INDEX CONCURRENTLY idx_a ON table_a(col);

只放一条语句。


方法2

在 migration 之间加checkpoint migration

V10__index_a.sql V11__noop.sql V12__index_b.sql

V11:

SELECT 1;


方法3(更稳定)

使用:

flyway.group=false

避免多个 migration 合并执行。

http://www.jsqmd.com/news/488311/

相关文章:

  • STC8G1K08A+ESP8266搭建猪场水压监测系统(附App Inventor源码)
  • Nunchaku-flux-1-dev开源贡献:在GitHub参与模型优化与插件开发
  • 振温传感器特征值及其作用
  • 微信照片过期打不开?那些回不去的旧时光
  • 红薯矮砧密植:水肥一体化系统铺设全指南
  • 硬件工程师必看!Allegro PCB批量转换PADS技巧:利用SKILL脚本实现自动化
  • DeerFlow API接口说明:与其他系统集成的技术细节
  • 什么是软件测试(20260316)
  • Spring Boot 启动时自动注入原理
  • 3D Face HRN在智能家居中的应用:个性化家庭助理形象定制
  • 比迪丽LoRA模型CSDN社区实践:分享我的LoRA训练与调试经验帖
  • 通义千问2.5企业应用案例:金融报告生成系统部署教程
  • 面试官问MySQL 自增 ID 用完了怎么办,该如何回答呢?
  • 收藏 | 程序员小白必看:轻松入门大模型,开启AI 2.0学习之旅
  • AudioLDM-S镜像免配置优势解析:Gradio开箱即用,告别pip install地狱
  • 电商智能客服数据存储方案:关系型数据库 vs 向量数据库的技术选型与实战
  • 一键部署体验:MogFace人脸检测工具开箱即用实战测评
  • 单词对战PK
  • 不用任何人类语言训练,大模型反而更强了?
  • 毕业设计实战:基于Spring Boot的学生网上选课系统设计与实现全攻略
  • Windows 上 openclaw onboard --install-daemon 命令的安装位置和启动配置
  • YOLO12与Node.js集成:后端服务开发实战
  • AI超清画质增强镜像:图片细节修复与降噪功能体验
  • (9-2)多模态融合理论与方法:中层融合
  • DJI Windows SDK开发避坑指南:从注册到成功运行(VS2019实测)
  • 开源大模型实践:软萌拆拆屋LoRA融合多专家模型探索
  • Golang--锁
  • RTOS技术路线之争的办公室江湖
  • StructBERT轻量级模型部署教程:ARM架构服务器(如树莓派)适配方案
  • Python战棋游戏开发:六边形地图A*寻路算法实战(附完整代码)