我想在Postgresql(9.3)中存储一个9个字符的字符串作为字符(9)。同样重要的是,我希望它能正确验证数据库是否正确,这是不正确的。我正在使用数据库迁移插件生成模式,该插件使用Hibernate工具。这是我到目前为止所尝试的内容:
static mapping = {
poleID column: "pole_id", sqlType: "character", length: 9
}
这正是它在DB中的创建方式,但是当我执行dbm-gorm-diff时,它会尝试修改列:
changeSet(author: "phil (generated)", id: "1401652394765-3") {
modifyDataType(columnName: "pole_id", newDataType: "character", tableName: "unit")
}
您可以看到长度被忽略。我也尝试用:
指定它static mapping = {
poleID column: "pole_id", sqlType: "character(9)"
}
同样,它尝试将那个已经正确的列修改为character(9)。如何指定映射,以便它看到DB已经正确?
答案 0 :(得分:2)
我刚刚遇到类似MySQL和grails 2.3.7的问题 - 我试图使用
sqltype: 'char', length: 128,
但忽略了长度,schema-export显示为' char'。在MySQL中,char与varchar很重要,所以我通过指定
解决了这个问题sqltype: 'char(128)'
我认为它只是Grails中的一个错误 - 除非明确表示有人希望这不会起作用(但是应该更好地记录)。