kubernetes - 如何修复未清除的 Liquibase 数据库锁
问题描述
我在项目中使用 liquibase,到目前为止它运行良好。
我添加了一个新的变更集,它在本地运行良好,一旦部署,容器的状态就会挂起以下语句:
“liquibase: Waiting for changelog lock...”。
未设置部署的限制资源。
表“databasechangeloglock”的更新不起作用,导致 pod 一直锁定它。
我该如何解决这个问题?
解决方案
在此处查看其他问题。如果锁发生并且进程意外退出,那么锁将保留在那里。
根据this answer,您可以通过直接运行SQL来解除锁定:
UPDATE DATABASECHANGELOGLOCK SET LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;
注意:根据您的数据库引擎,您可能需要使用 FALSE 或 'f' 而不是
0
值LOCKED
。
根据您的问题,您的进程本身正在创建一个新锁并且每次仍然失败,那么很可能是由于不同原因退出/失败的进程(或以错误的顺序检查锁。
另一种选择是考虑Liquibase No ChangeLog Lock 扩展。
注意:这可能是最后的手段。如果您在更改日志锁定方面遇到的麻烦多于获得任何好处(例如,仅运行应用程序的一个实例并且实际上不需要锁定),则扩展可能是一种选择。它可能不是“最佳”解决方案,但根据您的需要肯定是一种选择。链接中的自述文件也说明了这一点。
推荐阅读
- ios - 如何在 SwiftUI 中按日期对核心数据项进行分组?
- javascript - 状态不更新
- uhd - 超高清导入失败
- android - Android LinkedIn移动SDK错误?离子5
- jquery - jQuery 时间选择器 UseSelect
- angular - ng start angularProject 或 npm install 在根文件夹中生成额外文件
- python - 在 Python 3.7 上使用 igraph 绘制图形的问题
- c# - 如何将节点及其所有子节点从 XML 文档复制到另一个?
- mysql - 根据sql中的行和列条件过滤行
- django - Google Storage - Django - 如何基于 Django 用户身份验证提供对视频和图像文件的访问?