Grails - 在数据库迁移更改日志中调用脚本

时间:2013-11-20 01:20:19

标签: grails liquibase

在使用DB Migration插件时,我遇到了一个有趣的问题。在我们的常规战争部署中,我们需要一次又一次地运行某些脚本来进行数据更新,以适应我们更改的代码。虽然我们仍然可以在外部运行这些,但我们试图找到一种方法将它们添加为数据库迁移过程的一部分。

现在可以将这些脚本中的一组转换为迁移脚本并添加到grailsChange部分中,并且它们可以非常无缝地运行。还有另一组脚本,由于几个原因,这些脚本存在问题。

  1. 这些脚本一次又一次地运行,因此我们必须不断更改每次运行的id,因为我们不想复制代码,因此会丢失原始更改。
  2. 我们从命令行将params传递给这些脚本,通过上面的方法,我们必须将它们添加到脚本本身,这只会导致可维护性问题。
  3. 所以我的问题是,是否有更优雅的方式从数据库迁移脚本中触发外部grails或groovy脚本,这样每次我们需要运行脚本文件时,我们都可以使用更新的调用创建更改日志,用app标记它。

    我认为有一段时间有关于stackoverflow的帖子,但我不能为了生命的爱而找到它。对此有任何帮助将不胜感激。

    由于

1 个答案:

答案 0 :(得分:0)

脚本是否可以添加到bootstrap.groovy中?那可能是最简单的。只需使用groovy.sql.Sql来运行脚本。

另一个更实用,更灵活的选项是创建一个运行脚本的服务(groovy.sql.Sql)和一个域类来跟踪已经运行的脚本。您可以在bootstrap.groovy文件中触发该服务,该服务可以查看您设置的某些迁移域类,以查看该脚本是否已运行。您甚至可以尽可能地保护此机制的前端以上载脚本文件以在运行时执行。

让我知道你想要的更多细节,我可以尝试在我的回复中更详细。