我有一个Spring Boot应用程序,该应用程序已使用liquibase定义了数据库迁移.
当我启动应用程序脚本时,请等待500s并检查应用程序的http状态.当它返回错误代码时,脚本将终止应用程序进程并尝试再次启动应用程序.
有时在启动过程中应用程序被杀死,并且liquibase不会从databasechangeloglock中删除记录.当应用程序下次运行时,它会等待释放锁,但不会发生,并且一次又一次地杀死应用程序.
在日志中,每个应用程序的最后几行是:
liquibase : Waiting for changelog lock....
liquibase : Waiting for changelog lock....
您对在脚本中解决此问题有任何想法吗?
解决方法:
Liquibase的更改由2个表控制,这些表将在要更改的模式中:
您的更改未运行,因为databasechangeloglock表已设置LOCKED列.您可以在重新启动服务器/应用程序之前手动取消此设置.
在执行此操作之前,请务必小心
如果确定更改集尚未运行,则可以从两个更改日志表中删除relavent行.