惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

任霏博客

我将关闭服务器:AI彻底掐死了奄奄一息的个人博客 - 博客文章 - 任霏的个人博客网站 Vibe Coding 实现本地模型 Token 自由 IntelliJ IDEA + LM Studio + LM Link + Continue 1Password涨价后,别急着退订1Password,这个操作能帮你省25% - 博客文章 - 任霏的个人博客网站 我,吃饱了撑的注册了个域名,Cloudflare账号没了,不建议将域名放在Cloudflare - 博客文章 - 任霏的个人博客网站 临时邮箱:保护隐私与免骚扰的新方式 - 博客文章 - 任霏的个人博客网站 价值4100万美元SOL被盗SwissBorg在Solana上遭遇安全事件超200万枚ETH排队退出质押 - 博客文章 - 任霏的个人博客网站 注意 Web3 钱包遭遇 NPM 超大规模供应链攻击投毒事件 - 博客文章 - 任霏的个人博客网站 我受到以太坊ERC-20假代币地址投毒攻击记录一下大家谨防上当受骗 - 博客文章 - 任霏的个人博客网站 在2025年使用显卡 NVIDIA RTX 2080 Ti 挖矿收益记录和分析还能不能挖矿 - 博客文章 - 任霏的个人博客网站 分享我是如何成功戒烟的经验(包含失败的经验) - 博客文章 - 任霏的个人博客网站 在 OpenWRT 中配置 PassWall2 插件的教程记录 - 博客文章 - 任霏的个人博客网站 Office Professional Plus 2019 VL 版下载与 KMS 激活 - 博客文章 - 任霏的个人博客网站 最近几天我的 CDN 流量受到来自电信[山东烟台]、[江苏扬州]两地家庭宽带的攻击 - 博客文章 - 任霏的个人博客网站 自建AI服务器使用PVE配置显卡直通虚拟机安装驱动、CUDA和cuDNN运行LLM大模型进行AI炼丹 - 博客文章 - 任霏的个人博客网站 各代英特尔Intel芯片组主板适配兼容的CPU和DDR内存数据统计 - 博客文章 - 任霏的个人博客网站 GitLab Global 国际站将在60天内删除中国大陆、香港、澳门地区的账号 - 博客文章 - 任霏的个人博客网站 Github Copilot Free 开放免费版所有人均可使用 OpenAI GPT-4o、Anthropic Claude 3.5 AI 代码生成服务 - 博客文章 - 任霏的个人博客网站 Cloudflare 更新了订阅协议明确禁止优选IP和搭建梯子的行为 - 博客文章 - 任霏的个人博客网站 Linux(systemd)手动离线安装二进制(binary)MairaDB数据库指定版本 Spring Boot 全局异常捕获 ControllerAdvice 无法捕获 过滤器(Filter)和拦截器(Interceptor)中的异常 Freenom 收回了全部免费域名(.tk/.cf/.gq/.ga/.ml) Alibaba Druid 数据库连接池 takeLast() AQS 死锁导致程序无响应
流程引擎 Flowable/Activiti 无法启动报错:liquibase - Waiting for changelog lock.... - 博客文章 - 任霏的个人博客网站
任霏 · 2024-12-10 · via 任霏博客

如果你使用流程引擎 Flowable/Activiti,并且在程序启动时卡住,报错:liquibase - Waiting for changelog lock…,说明有数据库表没有释放锁,这里锁并不是数据库级别的锁表,所以你无法查询到被锁的表,这里的锁是逻辑上的锁。解决方案你需要检查以下数据库表,查询语句如下,主要看locked字段如果是1,那么说明锁是生效的状态:

SELECT locked FROM act_app_databasechangeloglock;
SELECT locked FROM act_cmmn_databasechangeloglock;
SELECT locked FROM act_co_databasechangeloglock;
SELECT locked FROM act_dmn_databasechangeloglock;
SELECT locked FROM act_fo_databasechangeloglock;
SELECT locked FROM flw_ev_databasechangeloglock;

解锁只需要修改这个状态值,我这里提供一个解锁模板,请根据你的实际情况修改:

UPDATE act_app_databasechangeloglock SET locked = 0, lockgranted = NULL, lockedby = NULL WHERE id = 1;
UPDATE act_cmmn_databasechangeloglock SET locked = 0, lockgranted = NULL, lockedby = NULL WHERE id = 1;
UPDATE act_co_databasechangeloglock SET locked = 0, lockgranted = NULL, lockedby = NULL WHERE id = 1;
UPDATE act_dmn_databasechangeloglock SET locked = 0, lockgranted = NULL, lockedby = NULL WHERE id = 1;
UPDATE act_fo_databasechangeloglock SET locked = 0, lockgranted = NULL, lockedby = NULL WHERE id = 1;
UPDATE flw_ev_databasechangeloglock SET locked = 0, lockgranted = NULL, lockedby = NULL WHERE id = 1;

如果你只想解决问题,到此为止即可,下面我们探索一下原理。调查原理其实,这是触发了 liqiubase 的数据库版本控制。LiquiBase 是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。DATABASECHANGELOGLOCK 表,用于控制 Liquibase 在应用变更时的并发访问。当 Liquibase 应用变更时,它会自动在表中创建一行记录,防止其他进程或线程同时修改数据库。当变更应用完成后,Liquibase 会删除这个表格中的记录,以允许其他进程或线程修改数据库。如果我们强制程序退出,比如 kill -9 杀死了进程,或者在本地 Debug 运行时双击了停止按钮,都会造成进程强制退出,此时如果正好数据库表正在执行变更,这个锁没有来得及删除,就会造成锁一直存在,下次启动时一直在等待锁的释放。综上所属,我们在退出程序时,还是最好等待程序自己完全执行完毕再退出,强制杀死进程可能会导致一些奇怪的问题出现。