Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中grails byte[]属性的数据类型错误_Mysql_Grails_Types - Fatal编程技术网

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

mysql中grails byte[]属性的数据类型错误,mysql,grails,types,Mysql,Grails,Types,我有一个应用程序,它正试图保存一张照片到数据库。我创建了一个带有byte[]属性的grails域类,在使用HSQLDB(grails中的默认值)时,该类运行良好。但是,当我将数据库更改为MySQL时,我最终得到以下错误: Data truncation: Data too long for column 'photo' at row 1 然后我查看了模式,发现字节[]被创建为TINYBLOB字段,这导致了错误 如何指定此属性应与数据库中的BLOB/LONGBLOB类型相对应?您应该能够通过添加

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

Data truncation: Data too long for column 'photo' at row 1
然后我查看了模式,发现字节[]被创建为TINYBLOB字段,这导致了错误


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

您应该能够通过添加一个类似以下内容的
映射来管理该属性:

static mapping = {
    photo type: "binary" // or "blob"?
}
文件如下:

休眠类型如下:

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

static mapping = {
    photo column: "photo_data", sqlType: "blob"
}
相关文件如下:

为该字段创建一个maxSize约束

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

谢谢你。第二种方法,显式指定'sqlType'有效。第一种方法,将类型设置为“binary”,仍然会导致列为TINYINT类型(并给出与以前相同的错误)。您可能会发现该字段不再针对其他数据库工作,因为您绕过了Hibernate的类型抽象,但这可能无关紧要。它对HSQL有效吗?我们正好遇到了这个问题,所以我可以回答我自己的问题:指定
sqlType='blob'
在HSQL中不起作用。它失败,错误为hbm2ddl.SchemaExport-错误的数据类型:语句中的BLOB[创建表映像(id bigint默认生成为标识(以1开头),版本bigint not null,数据BLOB]