通过CI/CD运行时,Redshift上的Liquibase更新失败,但手动运行时成功



所以我能够直接从我的机器上运行liquidbase更新,它们将成功运行,但是当通过aws代码构建运行时,它们将失败,在检查日志后,我发现这个错误是导致失败的原因,当我运行update或changeLogSync

liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: ERROR: current transaction is aborted, commands ignored until end of transaction block [Failed SQL: (0) CREATE TABLE DATABASECHANGELOGLOCK (ID INT NOT NULL, LOCKED BOOLEAN NOT NULL, LOCKGRANTED datetime, LOCKEDBY VARCHAR(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID))]

我怀疑这个语句失败是因为这个表已经存在。我通过在集群上查询

表来验证这一点。
select * from databasechangeloglock;
id | locked | lockgranted | lockedby 
----+--------+-------------+----------
1 | f      |             | 
(1 row)

我通过启动一个新的EC2盒并仅安装所需的驱动程序,扩展和liquidbase客户端来设置一个干净的环境,并且这个更新再次成功运行。Liquibase似乎只希望在通过代码构建运行时创建DATABASECHANGELOGLOCK。

我有codefresh ci/cd管道与liquibase docker映像(4.21.1)的确切错误。对我来说,解决办法是在运行之前将驱动程序从我的repo复制到liquibase安装位置/liquibase/internal/lib(根据您的环境可能不同)的lib文件夹中liquibase update.

相关内容

  • 没有找到相关文章

最新更新