gpt4 book ai didi

grails - Grails dbm-update和change_log变更集:是否具有事务性?

转载 作者:行者123 更新时间:2023-12-02 14:30:01 25 4
gpt4 key购买 nike

我的印象是,迁移脚本中的变更集是事务性的,但实际上,它们不是。

对于最简单的示例,创建一个基本的变更集条目,如下所示:

changeSet(author: "some_email@server.com", id: "1-1", description: "An example changeset for a changelog.groovy.") {
createTable(tableName: "table_name") {
column(autoIncrement: "true", name: "id", type: "BIGINT") {
constraints(nullable: "false", primaryKey: "true")
}

column(name: "version", type: "BIGINT") {
constraints(nullable: "false")
}

column(name: "name", type: "VARCHAR(64)") {
constraints(nullable: "false")
}

column(name: "name", type: "VARCHAR(64)") {
constraints(nullable: "false")
}

}

}

现在,显然我们不能添加两个具有相同名称的列,因此这将失败-并回滚。但是它不会回滚。创建表并添加第一列-尽管它是一个“错误的”变更集。

因此,问题是-

1)是changelog.groovy变更集交易吗?

2)grails dmb-update是否应该以事务方式执行变更集?

3)如果是,我们配置不正确是什么?

最佳答案

Grails中的数据库迁移不是事务性的。如果您需要回滚失败的变更集的能力,则必须自己编写回滚。

正如Burt指出的那样:“主要问题是事务,回滚等主要是数据/ DML概念。某些数据库至少部分支持回滚结构/ DDL更改,但是在一般情况下这是不切实际的”。

关于grails - Grails dbm-update和change_log变更集:是否具有事务性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37488226/

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