如何使用圣杯迁移增加 VARCHAR 大小



我使用 grails migration (liquibase) 为表 DB_SERVER 添加了 2 个新列SCOMMENTSURL

databaseChangeLog = {
    changeSet(author: "syam (generated)", id: "changelog-2.3.6") {
        addColumn(tableName:"DB_SERVER"){
            column(name:"SCOMMENT", type:"VARCHAR2(255 CHAR)"){
                    constraints(nullable: "true")
                }
        }
        addColumn(tableName:"DB_SERVER"){
            column(name:"SURL", type:"VARCHAR2(255 CHAR)"){
                    constraints(nullable: "true")
                }
        }
    }
}

最初,我定义了 SCOMMENTSURL 的长度为 255 个字符。在下一个版本中,我尝试使用如下所示modifyColumn将字符长度增加到 1024

databaseChangeLog = {
    changeSet(author: "syam (generated)", id: "changelog-2.3.7") {
        // Increase maximum length of characters for scomment field in DbServer
        modifyDataType(columnName:"SCOMMENT", tableName:"DB_SERVER", newDataType="VARCHAR2(1024 CHAR)")
        //Increase the maximum length of characters for surl field in DbServer
        modifyDataType(columnName:"SURL", tableName:"DB_SERVER", newDataType="VARCHAR2(1024 CHAR)")
    }
}

当我尝试迁移时,出现以下错误

Error 2014-12-08 13:11:28,086 [localhost-startStop-1] ERROR context.GrailsContextLoader  - Error initializing the application: liquibase.exception.ValidationFailedException: Validation Failed:
     2 changes have validation failures
          newDataType is required, changelog-2.3.7.groovy::changelog-2.3.7::syam(generated)::(Checksum: 3:04f74b0209f64ad261e4a864fcc3c43c)
Message: liquibase.exception.ValidationFailedException: Validation Failed:
     2 changes have validation failures
          newDataType is required, changelog-2.3.7.groovy::changelog-2.3.7::syam (generated)::(Checksum: 3:04f74b0209f64ad261e4a864fcc3c43c)
    Line | Method
->>  262 | run       in java.util.concurrent.FutureTask

如何更改SCOMMENTSURL字符的长度?

该错误是 Liquibase 错误,而不是数据库错误。Liquibase 没有看到 newDataType 属性,因此抛出验证错误,但您正在设置它。我能够使用标准 liquibase 和 xml 或 json 运行类似的 changeSet,因此这可能是圣杯 DSL 的问题。可能值得与他们提出问题。

你总是可以回退到"sql"命令,如果grails解析有问题,也可以直接传递ALTER TABLE语句。

我不得不做同样的事情,复制你的代码并得到同样的错误。我发现你有一个错字:你必须在"newDataType=..."中将"="替换为":"。然后,我对那个修复没有错误。

您发布的示例有拼写错误。 你有一个等号,你应该有一个冒号:

改变

modifyDataType(columnName:"SCOMMENT", tableName:"DB_SERVER", newDataType="VARCHAR2(1024 CHAR)")

modifyDataType(columnName:"SCOMMENT", tableName:"DB_SERVER", newDataType:"VARCHAR2(1024 CHAR)")

根据您使用的数据库的数据库 sql 方言,更改集语法会有所不同。使用 MySQL GORM:

databaseChangeLog = {
    changeSet(author: "kujalpe (manual)", id: "1493972667393-1") {
        comment{'BUG-1 Increase SCOMMENT column size in DB_SERVER table'}
        modifyDataType(tableName: "DB_SERVER", columnName: "SCOMMENT", newDataType: "varchar(1024)")
    }
}

相关内容

  • 没有找到相关文章

最新更新