【问题标题】:Trouble running liquibase with different agent使用不同的代理运行 liquibase 时出现问题
【发布时间】:2010-12-27 23:24:46
【问题描述】:

我需要通过 ant 和 spring 执行相同的 db-changelog。我希望蚂蚁会运行更新日志,当 spring 运行时,它不会做任何事情,只是正常停止。 Ant 成功运行 db-changelog,然后 spring 运行,但它抛出异常,这是堆栈跟踪的一部分:

原因:liquibase.exception.JDBCException:执行 SQL CREATE TABLE 操作时出错(action_id int8 NOT NULL,action_name VARCHAR(255),version_no int8,reason_required BOOLEAN,comment_required BOOLEAN,step_id int8,CONSTRAINT action_pkey PRIMARY KEY (action_id)): 原因:执行 SQL CREATE TABLE 操作时出错(action_id int8 NOT NULL,action_name VARCHAR(255),version_no int8,reason_required BOOLEAN,comment_required BOOLEAN,step_id int8,CONSTRAINT action_pkey PRIMARY KEY (action_id)): 引起:错误:关系“动作”已经存在;嵌套异常是 org.springframework.beans.factory.BeanCreationException....

任何帮助将不胜感激。

问候,

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    听起来确实像是在尝试再次运行更改日志。 changeLog 中的每个 changeSet 都由 id、author 和 changelog 路径/文件名的组合标识。如果你运行“select * from databasechangelog”,你可以看到使用的值。

    您的问题可能是您引用的更改日志文件与 ant 和 spring 不同,因此生成了不同的文件名值。通常您会希望将它们包含在类路径中,因此无论您在何处以及如何运行它们,它们都具有相同的路径(例如“com/example/db.changelog.xml”)

    【讨论】:

    • 谢谢 Nathan,这确实是问题所在。但是我已经更改了实现,以便在春季之前运行更新日志,以避免任何进一步的头痛:D.
    【解决方案2】:

    我遇到了同样的问题,并且能够通过更改 DATABASECHANGELOG 的文件名列以引用 spring 资源路径来解决它。就我而言,我使用的是 WEB-INF 目录下的 ServletContextResource:

    update DATABASECHANGELOG set FILENAME = 'WEB-INF/path/to/changelog.xml' where FILENAME = 'changelog.xml'
    

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 2019-05-30
      • 2017-05-06
      • 2019-02-14
      • 2014-05-16
      • 1970-01-01
      • 2022-12-21
      • 2018-12-14
      • 1970-01-01
      相关资源
      最近更新 更多