Gradle 由于delta_集合中没有默认值,如何解决dbdeploy中的SchemaVersionTrackingException?

Gradle 由于delta_集合中没有默认值,如何解决dbdeploy中的SchemaVersionTrackingException?,gradle,database-migration,dbdeploy,Gradle,Database Migration,Dbdeploy,我正在尝试自动迁移数据库。我使用dbdeploy实现同样的功能。 我遵循了此链接中的步骤 我将更改日志表创建为: CREATE TABLE changelog ( change_number INTEGER NOT NULL, delta_set VARCHAR(10) NOT NULL, start_dt TIMESTAMP NOT NULL, complete_dt TIMESTAMP NULL, applied_by VARCHAR(100) NOT NULL, d

我正在尝试自动迁移数据库。我使用dbdeploy实现同样的功能。 我遵循了此链接中的步骤

我将更改日志表创建为:

CREATE TABLE changelog (
  change_number INTEGER NOT NULL,
  delta_set VARCHAR(10) NOT NULL,
  start_dt TIMESTAMP NOT NULL,
  complete_dt TIMESTAMP NULL,
  applied_by VARCHAR(100) NOT NULL,
  description VARCHAR(500) NOT NULL
);

ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number, delta_set);
build.gradle中的updateDatabase任务是:

task updateDatabase << {
    ant.dbdeploy(driver: dbDriver,
            url: dbUrl,
            userid: dbUsername,
            password: dbPassword,
            dir: './src/main/resources/deploy/sql',
            dbms: 'mysql'

    )
}
但是,我还是得到了同样的例外

我还删除了delta_set属性,得到了相同的异常。这真把我弄糊涂了

我对数据迁移一无所知。因此,任何关于这个错误的帮助,以及我应该如何去做,都将不胜感激


提前感谢。

DBDeploy文档对此不是很明确,但是在2.X版和3.X版之间,
changelog
表格格式发生了变化(请参阅)。我怀疑您正在使用DBDeploy 3.X

您需要:

  • 删除旧的
    changelog
    表:

    DROP TABLE changelog;
    
  • 使用新格式重新创建它:

    CREATE TABLE changelog (
      change_number INTEGER NOT NULL,
      complete_dt TIMESTAMP NOT NULL,
      applied_by VARCHAR(100) NOT NULL,
      description VARCHAR(500) NOT NULL
    );
    
    ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number);
    
  • 在这之后,一切都会好起来

    CREATE TABLE changelog (
      change_number INTEGER NOT NULL,
      complete_dt TIMESTAMP NOT NULL,
      applied_by VARCHAR(100) NOT NULL,
      description VARCHAR(500) NOT NULL
    );
    
    ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number);