当前位置: 首页 > 知识库问答 >
问题:

Liquibase忽略已经执行的更改集

申屠秦斩
2023-03-14

我试图从现有数据库(MySQL)中使用liquibase(3.5.5)。

>

C: /液化酶-3.5.5/liquibase。bat—驱动程序=com.mysql。jdbc。驱动程序^--classpath=C:/Libraries/mysql-connector-java-5.1.37-bin。jar^--changeLogFile=db。变更日志。xml^--url=“jdbc:mysql://vbalder/izalerting“^--用户名=*^--密码=*^generateChangeLog”

结果:Liquibase“generateChangeLog”成功

生成的db。变更日志。xml文件包含带有作者BGADEYNE(生成的)和id的变更集,其前缀为1533645947580-。e、 g.1533645947580-1

我使用了changelogSync命令来创建和填充DATABASECHANGELOG和DATABASECHANGELOGLOCK表。它们确实包含每个变更集的行。

C:/liquibase-3.5.5/liquibase-驱动程序=com.mysql.jdbc.驱动程序^-类路径=C:/库/mysql-connector-java-5.1.37-bin.jar^-更改日志文件=db.changelog.xml^-url="jdbc: mysql://vbalder/izalerting"^-用户名=izalerting^-密码=alfa^ChangelogSync

结果:Liquibase“changelogSync”成功

添加了maven依赖项:

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-cdi</artifactId>
    <version>3.5.5</version>
</dependency>

添加了CLI组件:

@Dependent
public class LiquibaseProducer {
    @Resource(name="java:/izalerting")
    private DataSource dbConnection;

    @Produces @LiquibaseType
    public CDILiquibaseConfig createConfig() {
        CDILiquibaseConfig config = new CDILiquibaseConfig();
        config.setChangeLog("be/uzgent/iz/alerting/liquibase/db.changelog.xml");
        config.setContexts("non-legacy");
        return config;
    }

    @Produces @LiquibaseType
    public DataSource createDataSource() throws SQLException {
        return dbConnection;
    }

    @Produces @LiquibaseType
    public ResourceAccessor create() {
        return new ClassLoaderResourceAccessor(getClass().getClassLoader());
    }
}

将应用程序部署到WildFly时,我可以看到这一点

2018-08-07 15:07:09234错误[stderr](MSC服务线程1-4)信息2018年7月8日下午3:07:liquibase。整合。cdi。CDILiquibase:Booting Liquibase 3.5.4 2018-08-07 15:07:09285 ERROR[stderr](MSC服务线程1-4)INFO 8/7/18 3:07 PM:Liquibase:Successfully acquired change log lock 2018-08-07 15:07:09781 ERROR[stderr](MSC服务线程1-4)INFO 8/7/18 3:07 PM:Liquibase:Reading from PUBLIC。DATABASECHANGELOG 2018-08-07 15:07:09814错误[stderr](MSC服务线程1-4)严重2018年8月7日下午3:07:liquibase:db。变更日志。xml:db。变更日志。xml::1533645947580-1::BGADEYNE(生成):更改集db。变更日志。xml::1533645947580-1::BGADEYNE(生成)失败。错误:表“ALERTRESULT”已存在;SQL语句:2018-08-07 15:07:09815 ERROR[stderr](MSC service thread 1-4)CREATE TABLE PUBLIC。alertresult(triggerid VARCHAR(255)不为NULL,application VARCHAR(40)不为NULL,resultid INT不为NULL,subject VARCHAR(255),content CLOB,contenturl CLOB,executetime TIMESTAMP,html BOOLEAN DEFAULT TRUE不为NULL,alertlevel VARCHAR(20)DEFAULT‘INFO’不为NULL,closable BOOLEAN DEFAULT TRUE不为NULL,screenwidth INT,screenheight INT)[42101-173][失败的SQL:创建表PUBLIC.alertresult(triggerid VARCHAR(255)不为NULL,应用程序VARCHAR(40)不为NULL,resultid INT不为NULL,subject VARCHAR(255),content CLOB,contenturl CLOB,executetime TIMESTAMP,html BOOLEAN DEFAULT TRUE不为NULL,alertlevel VARCHAR(20)默认值“INFO”不为NULL,可关闭布尔值默认值TRUE不为NULL,screenwidth INT,screenheight INT)]2018-08-07 15:07:09816错误[stderr](MSC服务线程1-4)信息8/7/18 3:07 PM:liquibase:db。变更日志。xml::1533645947580-1::BGADEYNE(已生成):已成功释放更改日志锁

DATABASE CHANGELOG表包含每个change eSet的一行。

+------------------+-----------------------+-------------------+-----------+
|       # ID       |         AUTHOR        |      FILENAME     |  EXECTYPE |
+------------------+-----------------------+-------------------+-----------+
| 1533645947580-1  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-2  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-3  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-4  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-5  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-6  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-7  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-8  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-9  |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-10 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-11 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-12 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-13 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-14 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-15 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-16 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-17 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-18 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-19 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
| 1533645947580-20 |  BGADEYNE (generated) |  db.changelog.xml |  EXECUTED |
+------------------+-----------------------+-------------------+-----------+

有人知道我做错了什么吗?


共有1个答案

谭毅然
2023-03-14

而不是

@Resource(name="java:/izalerting")

我需要使用

@Resource(lookup="java:/izalerting")

狂野9

 类似资料:
  • 我在酗酒方面遇到了麻烦。出于某种原因(我没有更改任何现有的变更集或其他东西),它试图应用已经在base中的变更集。所以我得到了一些错误,比如“关系”表“已经存在”。 我找到了这个标签-

  • 我在一些字段上有@NotNull注释。然而,当我尝试生成diffChangelog时,它会删除所有非空约束 示例类: 差异集: 唯一的解决方案似乎是在每个字段上添加一个额外的注释@列(nullable=false)。我可以做任何事情,这样我就不必在每个字段上添加额外的注释。

  • 我有一个由mysql数据库支持的dropwizard应用程序。我正在使用liquibase包装器进行数据库迁移 首先,我使用“db dump”命令自动生成迁移。xml文件。 现在我正在重构数据库,我希望能够更新特定的列名和表的名称。 我使用先决条件跳过已经生成的表以跳过“”命令 现在如何跳过主键和外键约束的执行?在变更日志级别是否有一个先决条件可以用来表示“跳过已执行的变更集”?或者我只是创建一个

  • 您可能已经注意到,缺少了“生成为标识”,这使我相信不管出于什么原因,AutoIncrement=“true”被忽略了。 我使用Oracle 12.1.0.2和org.LiquiBase:LiquiBase-Core 3.8.2。OJDBC驱动程序版本为19.3.0.0。分级属性为: 我读过互联网,我知道我的Oracle版本与此列类型兼容,并且我不需要创建额外的Oracle序列。有什么线索会出什么问

  • 问题内容: 我有一堂课,里面也有变量。有时我想忽略某些字段,有时在反序列化时不想忽略(也许也在序列化时)。在Jackson怎么办? 问题答案: 对于序列化,“ 过滤属性 ”博客条目应该会有所帮助。反序列化方面的支持较少,因为更常见的是要过滤掉所写的内容。 一种可能的方法是子类化,重写使方法(和/或字段)具有可忽略性的方法,以使用所需的任何逻辑。 如果您举了一个实际应用的例子,这也可能会有所帮助,即

  • 我正在使用计划执行服务 以固定速率运行runnable