Почему изменение свойств сопоставления в домене не приводит к появлению новых строк журнала изменений?

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")
    }
}

Поэтому всегда, после создания журнала изменений, проверяйте, содержит ли он правильные изменения или нет.

Другие вопросы по тегам