Grails 《圣杯2.5》:“;dbm gorm diff“;不断生成相同的更改

Grails 《圣杯2.5》:“;dbm gorm diff“;不断生成相同的更改,grails,liquibase,Grails,Liquibase,首先,我们删除了数据库,然后使用dbCreate=“update”运行我们的应用程序,以创建一个良好的工作基础 然后我们跑: grails dbm-generate-changelog baseline.xml 创建脚本以生成模式。我们从DataSource.groovy中删除了dbCreate=xxx,并在Config.groovy中添加了以下内容: grails.plugin.databasemigration.updateOnStart = true grails.plugin.data

首先,我们删除了数据库,然后使用
dbCreate=“update”
运行我们的应用程序,以创建一个良好的工作基础

然后我们跑:

grails dbm-generate-changelog baseline.xml
创建脚本以生成模式。我们从
DataSource.groovy
中删除了
dbCreate=xxx
,并在
Config.groovy
中添加了以下内容:

grails.plugin.databasemigration.updateOnStart = true
grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.groovy']
然后我们启动了我们的应用程序,它创建了DB,这次是从liquibase开始的,我们认为一切都很好

然后,我们什么也没有更改(源代码没有更改),并执行了以下操作:

grails dbm-gorm-diff should_be_empty.xml --add
令我们惊讶的是,这生成了9个额外的变更集,全部用于索引

e、 g:

现在它又生成了5个变更集,所有索引,都是以前发现的9个变更集的副本。看看数据库本身,已经有一个名称、表和列完全相同的索引。所以数据库已经有了更改,现在相同的重复更改在更改集中出现了两次,我们不知道为什么它出现在原始基线中,从
dbm generate changelog


发生了什么事

我们在应用程序中看到了完全相同的东西。这只是我们已经习惯了的事情。。。运行dbm gorm diff,用一把梳子仔细检查生成的变更日志,找出需要删除、删除、重复的部分。DATABASECHANGELOG是否包含原始基线的记录。xml?@john Giotta,是的DATABASECHANGELOG包含所有原始基线更改,以及我们看到的重复项。我们不知道为什么dbm gorm diff创建的随机索引没有在域模型(不是FK、PK或UK)中定义,也没有在原始bm generate changelogI中定义。我以前遇到过这个问题,但这与使用SQL Server时使用正确的方言有关。例如,datetime与datetime2。还有一次,我的本地数据库是SQLServer2008,但测试是2012年。bigint被设置为数字。“从来都不是主要的事件。”约翰,非常有趣。在我们的例子中,我使用这两种工具访问同一个物理数据库。我猜正常的“dbCreate=“update”和dbm update都使用相同的数据源,所以在这种情况下都使用相同的SQL和dialict设置?对于我们的产品,我们有galera,所以当我们部署到该产品时,这可能是一个更大的问题。
<changeSet author="me(generated)" id="1438097433176-1">
    <createIndex indexName="site_id_uniq_1438097432189" tableName="adobe_message_service_config" unique="true">
        <column name="site_id"/>
    </createIndex>
</changeSet>
<changeSet author="me(generated)" id="1438097433176-4">
    <createIndex indexName="IX_note_player" tableName="note">
        <column name="player_id"/>
    </createIndex>
</changeSet>
grails dbm-gorm-diff should_be_empty_this_time.xml --add