Как мне сопоставить строку фиксированной длины с Postgresql, используя GORM?
У меня есть строка из 9 символов, которую я хочу сохранить в Postgresql (9.3) как символ (9). Не менее важно, чтобы я правильно проверил правильность базы данных, чего не происходит. Я генерирую схему, используя плагин Database Migration, который использует инструменты Hibernate. Вот что я пробовал до сих пор:
static mapping = {
poleID column: "pole_id", sqlType: "character", length: 9
}
Именно так он и создается в БД, однако, когда я делаю 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)"
}
Опять же, он пытается изменить этот столбец, который уже является правильным, до символа (9). Как мне указать сопоставление, чтобы он видел, что БД уже правильно?
1 ответ
У меня просто была похожая проблема с MySQL и Grails 2.3.7 - я пытался использовать
sqltype: 'char', length: 128,
но длина была проигнорирована, экспорт схемы показал это как 'char'. В MySQL значение char и varchar имеет значение, поэтому я решил эту проблему, указав
sqltype: 'char(128)'
Я думаю, что это просто ошибка в Grails - если только кто-то явно не хотел, чтобы это НЕ работало (но тогда это должно быть лучше задокументировано).