Grails GORM 自动建表失败,且无错误提示信息

Querida ·
更新时间:2024-09-20
· 694 次阅读

今天遇到一个情况,GORM 根据 class 自动建表失败,且没有任何提示信息。

造成建表失败的原因是 varchar 类型字段的 maxSize*3 超过了 mysql varchar 字段最大字节数。
为什么要乘以3呢?因为 mysql 类型长度是按字节算,而varchar长度是按字符算的,所以 varchar(1) 实际占用的字节长度是3(如果数据库编码是 utf-8 的话)。

因为 mysql varchar 最大字节长度是 65535,因此 varchar 最大字符长度是 65535/3 = 21845。

造成错误的代码:

class Trade { String orderString static constraints = { orderString maxSize: 1024*10 } }

这估计是 GORM 的一个bug,因为按照文档,GORM 应该自动调整 orderString 的 mapping,变成 text sql 类型的字段才对。

我们需要给 grails 提一个 bug issue。

解决办法:

指定 column 的 sqlType: “text” 即可 class Trade { String orderString static mapping = { orderString sqlType: "text" } static constraints = { orderString maxSize: 1024*10 } }
作者:微风好飞行



gorm grails 自动

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章