Почему изменение свойств сопоставления в домене не приводит к появлению новых строк журнала изменений?
class Donation {
BigDecimal amount
static constraints = {
amount min: BigDecimal.ZERO
}
static mapping = {
}
}
После добавления домен выглядел следующим образом:
class Donation {
BigDecimal amount
static constraints = {
amount min: BigDecimal.ZERO
}
static mapping = {
amount scale: 4
}
}
После внесения изменений я запустил dbm-gorm-diff в консоли grails, но он не печатал никаких дополнительных строк журнала изменений. Мне было интересно, если изменение отображения не приведет к появлению новых строк журнала изменений. Но, глядя на тип данных "количество" в базе данных MySQL, он показал десятичное число (19,2). Я думал, что создание масштаба 4 изменит тип данных на десятичный (19, 4). Я ценю любую помощь в этой дилемме. Спасибо!
1 ответ
В то время как db-igration может обнаружить изменения в ваших доменах и может сгенерировать желаемый журнал изменений для обновления схемы базы данных. Он недостаточно умен, чтобы постоянно находить правильные изменения. В частности, когда вы переименовываете таблицу / столбец или изменяете тип данных столбца. В таких сценариях вам необходимо выполнить миграцию вручную.
Создайте журнал изменений вручную, чтобы обновить схему с помощью db-igration:
databaseChangeLog = {
changeSet(author: "sandeep (manual)", id: "20150901124635-01") {
modifyDataType(columnName: "amount", newDataType: "decimal(19,4)", tableName: "donation")
}
}
Поэтому всегда, после создания журнала изменений, проверяйте, содержит ли он правильные изменения или нет.