mysql中的错误数据类型为grails byte []属性

时间:2010-12-26 08:48:56

标签: mysql grails types

我有一个试图将照片保存到数据库的应用程序。我创建了一个带有byte []属性的grails域类,这在使用HSQLDB(grails中的默认值)时运行良好。但是,当我将数据库更改为MySQL时,我最终收到以下错误:

Data truncation: Data too long for column 'photo' at row 1

然后我查看了模式,发现byte []被创建为TINYBLOB字段,导致错误。

如何指定此属性应与数据库中的BLOB / LONGBLOB类型对应?

2 个答案:

答案 0 :(得分:4)

您应该可以通过添加mapping闭包来管理它:

static mapping = {
    photo type: "binary" // or "blob"?
}

文档在这里:http://grails.org/doc/latest/ref/Database%20Mapping/type.html

Hibernate类型在这里:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-types-basictypes

还有一个sqlType属性,我相信它是指底层数据库类型,而不是hibernate的数据库不可知类型抽象:

static mapping = {
    photo column: "photo_data", sqlType: "blob"
}

此处的文档如下: http://grails.org/doc/latest/ref/Database%20Mapping/column.html

答案 1 :(得分:2)

为该字段创建一个包含maxSize的约束。

static constraints = {
    photo(maxSize: 102400) // 100Kb
}