gpt4 book ai didi

gradle - 由于delta_set中没有默认值,如何解决dbdeploy中的SchemaVersionTrackingException?

转载 作者:行者123 更新时间:2023-12-03 03:36:13 24 4
gpt4 key购买 nike

我正在尝试执行自动数据库迁移。我同样使用dbdeploy。
我按照此链接http://blog.codeborne.com/2012/09/using-dbdeploy-in-gradle.html中的步骤进行操作

我将更改日志表创建为:

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'

)
}

当我抓取updateDatabase时,得到com.dbdeploy.exceptions.SchemaVersionTrackingException:无法更新更改日志,因为:字段'delta_set'没有默认值。

我尝试在更改表日志文件中将“main”分配为默认值,如下所示:
delta_set VARCHAR(10) NOT NULL DEFAULT 'Main'

但是,我仍然有同样的异常(exception)。

我还删除了delta_set属性,但出现了同样的异常。这真的让我感到困惑。

我对数据迁移完全陌生。因此,对于此错误以及我应该如何解决的任何帮助将深表感谢。

先感谢您。

最佳答案

DBDeploy文档对此不是很明确,但是changelog表格式在版本2.X和3.X之间进行了更改(请参阅upgrade instructions)。我怀疑您正在使用DBDeploy3.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);

  • 在此之后,一切都应该工作。

    关于gradle - 由于delta_set中没有默认值,如何解决dbdeploy中的SchemaVersionTrackingException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156538/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com