неверный тип данных в mysql для свойства grails byte [] - PullRequest
2 голосов
/ 26 декабря 2010

У меня есть приложение, которое пытается сохранить фотографию в базе данных.Я создал класс домена grails со свойством byte [], и это работало хорошо при использовании HSQLDB (по умолчанию в grails).Однако, когда я изменил базу данных на MySQL, я получил следующую ошибку:

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

Затем я посмотрел на схему и обнаружил, что byte [] создается как поле TINYBLOB, котороебыл причиной ошибки.

Как указать, что это свойство должно соответствовать типу BLOB / LONGBLOB в базе данных?

Ответы [ 2 ]

4 голосов
/ 26 декабря 2010

Вы должны иметь возможность управлять этим, добавив 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

2 голосов
/ 17 июня 2011

Создать ограничение с maxSize для этого поля.

static constraints = {
    photo(maxSize: 102400) // 100Kb
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...