我的团队正在研究数据库迁移工具(例如,Flyway,Liquibase),所以我正在思考如何使用我的groovy + grails服务方法将我对db内容所做的更改合并到一起。我没有提到对列和/或表(即域类)的更改,我指的是代表关联webapp的配置值的行的插入/更新。
我的服务方法被编写为在某种程度上以交互方式使用。也就是说,当我在各种表中添加或更新行(即newInstance
或save
)时,它可以帮助我导航各种数据库约束并确保所有外键和我自己的业务逻辑设置正确。我反复运行它(之后每次使用setRollbackOnly()
回滚)直到我找到了我满意的东西。该方法是用groovy编写的,我不想在sql中重写它。
有没有办法让groovy / grails发出它会执行的sql而不是执行sql?也就是说,给我一些我可以复制/粘贴到Flyway迁移或Liquibase变更集中的东西吗?
我查看logging,但我必须以某种方式处理该输出以替换值并获取正确的列名称,即使这样我也需要区分行我实际上改变了数据库(也许我可以提取插入和更新)。我也研究了这些 grails database migration scripts,但他们似乎要么关注域类(不是我的更改发生的地方),要么是整个数据库(这会扫除大量用户数据)。
谢谢!