gpt4 book ai didi

grails - Grails迁移问题。 DBM-UPDATE包含不递归,静默失败

转载 作者:行者123 更新时间:2023-12-02 14:51:40 27 4
gpt4 key购买 nike

这是正在进行的项目的一部分...拆分域对象,以便多个应用程序可以使用它们。域对象的数据库迁移文件与插件一起使用...但是我们希望这些应用程序能够在dbm更新期间引用它们。

我可以让应用程序识别插件的更改日志,但是在此之后,更改日志将不会执行包含和处理它们的操作,这是我期望的。

使用GrailsPluginUtils,我可以获取插件的路径和插件更改日志,并使用它们来包含文件。如果我将changeSet正确放置在该文件中,则很好,它将运行。如果我将其移动到同一文件夹或子文件夹中的单独文件中,并通过“./someFile.groovy”进行引用,则似乎可以找到它,但不对其进行处理。我说似乎找到了它,因为如果我不使用相对文件路径,则迁移过程会引发错误,指出它找不到文件,例如“someFile.groovy” ...

我有变通办法,但是它们是 Not Acceptable ,因为我们想通过使用带有_changelog.groovy的子目录来控制数据库迁移的顺序,该子目录随后包含实际的转换(changeSets)。但是它们没有被“包含”。

如果使用includeAll,它将捕获该文件夹中的所有脚本,但同样,不会处理其中引用的任何其他包含。我可以编写一个脚本来递归扫描文件夹,但同样,这需要大量编码来解析_changelogs并获取适当的包含顺序等。

我真的只希望“include file:”可以像在给定应用程序中一样为自己的changelog文件工作。

还有其他人这样做吗?我是否缺少明显的东西?

在应用中...

databaseChangeLog {
...
include file: "${GrailsPluginUtils.pluginInfos.find { it.name == 'my-plugin' }.pluginDir}/grails-app/migrations/my_plugin_changes"
}

...在插件中...
databaseChangeLog {
include file: "./someChangeLogChangeSet.groovy"
}

谢谢...

最佳答案

我们还尝试将changelog文件添加到我们的域所在的插件中,但是无法从主应用程序访问它。但是,如果要从其他位置访问文件,则可以在配置文件中指定此属性,并在此处指定文件夹名称,甚至将所有迁移都复制到适当的位置到主应用程序。

grails.plugin.databasemigration.changelogLocation = 'migrations' 

如果您确实找到了解决方案,请发布它。

关于grails - Grails迁移问题。 DBM-UPDATE包含不递归,静默失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25647713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com