Grails Test-App 尝试插入更新的表而不是更新它们

Grails Test-App Tries to Insert Updated Tables Instead of Update Them

我已经通过 Jenkins 将我们的 grails 应用程序构建到 AWS Elastic Beanstalk 一段时间了,现在没有问题,在分支机构之间跳跃和构建多年。但是,在将 grails 测试套件添加到构建中时,这成为了一个问题。

我为 jenkins 设置了一个测试数据库,让 grails 自己填充所有 table 数据,它工作了几个月,直到最近我决定部署一个大约 6 的分支几个月大到我们的开发环境之一。您可以猜到,一个 6 个月大的分支缺少一些在最新版本中的列,因此在数据库中,因此 grails 删除了这些列,并且测试和部署没有问题。

当我将更新的分支部署到不同的环境时,问题出现了,grails test-app 由于 sql 错误而开始失败,因为该应用程序试图使用一个没有的列存在于 table.

我进一步深入研究并在日志中发现当 grails 应该尝试更新 tables 因为它们已经存在并且只需要添加一个列时,它试图插入 tables 代替。显然,这导致 table 已经存在并且数据库未更新的问题。

有人知道如何强制 grails test-app 更新数据库 tables 而不是尝试插入它们吗?这在应用程序的使用中从未发生过,所以我知道这是本地化的测试套件问题,但它的文档有点糟糕,特别是对于 grails 2.3.11,所以我找不到任何东西。

这最终是由于部署的旧分支对测试环境具有不同的 dbCreate 值,因此由于某种原因,当它使用“更新”的 dbCreate 属性 进行更改时,然后切换回到“create-drop”,它不再可以在重新添加之前删除表。