如何使用grails迁移增加VARCHAR大小
我使用grails迁移(liquibase)为table如何使用grails迁移增加VARCHAR大小,grails,database-migration,liquibase,Grails,Database Migration,Liquibase,我使用grails迁移(liquibase)为tableDB\u服务器添加了两个新列SCOMMENT和SURL 最初我定义了长度为255个字符的SCOMMENT和SURL。在下一个版本中,我尝试使用modifyColumn将字符长度增加到1024,如下所示 databaseChangeLog = { changeSet(author: "syam (generated)", id: "changelog-2.3.7") { // Increase maximum len
DB\u服务器添加了两个新列SCOMMENT
和SURL
最初我定义了长度为255个字符的SCOMMENT
和SURL
。在下一个版本中,我尝试使用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
如何更改SCOMMENT
和SURL
的字符长度?该错误是液化错误,而不是数据库错误。Liquibase没有看到newDataType属性,因此抛出验证错误,但您正在设置它。我能够用标准的liquibase和xml或json运行类似的变更集,所以这可能是GrailsDSL的一个问题。也许值得向他们提出一个问题
如果grails解析有问题,您可以始终返回到“sql”命令,也可以直接传递ALTER TABLE语句。您发布的示例有输入错误。您有一个等号,其中应该有一个冒号:
改变
modifyDataType(columnName:"SCOMMENT", tableName:"DB_SERVER", newDataType="VARCHAR2(1024 CHAR)")
到
我不得不做同样的事情,复制了你的代码,得到了同样的错误。我发现您有一个输入错误:您必须在“newDataType=…”中将“=”替换为“:”。然后,我对该修复没有错误 根据您使用的数据库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)")
}
}
这可能很接近,但你应该删除“CHAR”,对吗?它不应该是VARCHAR2(1024)吗?消息似乎在说您没有指定类型,但这可能是因为这是一种意外的格式。当您在客户端手动执行此操作时,这是否有效?在没有“CHAR”的情况下进行了尝试,但再次出现相同的错误。我通常通过dbm gorm diff
生成变更日志。changelog-2.3.6(第一个块中的代码)是生成的精确代码。是的,在客户端手动修改工作正常。我使用的是grails版本2.2.4和database-migration-1.3.2。这是旧版本的问题吗。
modifyDataType(columnName:"SCOMMENT", tableName:"DB_SERVER", newDataType:"VARCHAR2(1024 CHAR)")
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)")
}
}