- grails/
- 如何使用Grails2.5部署liquibase更改
如何使用Grails2.5部署liquibase更改
如何使用Grails2.5部署liquibase更改,grails,war,liquibase,Grails,War,Liquibase,Grails将liquibase xml脚本文件放在war中的以下位置:
WEB-INF/类/迁移/
至少有5种策略可以将这些更改放到prodcution服务器上,但没有一种是可行的:
设置“grails.plugin.databasemigration.updateOnStart=true”。这不起作用,因为grails数据库迁移插件硬编码为liquibase 2.0.5,该版本充满了bug,无法使用。它创建了一个损坏的模式
将liquibase 3.3.5 jar放在生产服务器上,然后尝试运
Grails将liquibase xml脚本文件放在war中的以下位置:
WEB-INF/类/迁移/
至少有5种策略可以将这些更改放到prodcution服务器上,但没有一种是可行的:
设置“grails.plugin.databasemigration.updateOnStart=true”。这不起作用,因为grails数据库迁移插件硬编码为liquibase 2.0.5,该版本充满了bug,无法使用。它创建了一个损坏的模式
将liquibase 3.3.5 jar放在生产服务器上,然后尝试运行它,将其指向war文件以获取变更日志文件。这根本不起作用。看
解压缩war,并对解压缩的变更日志文件运行liquibase命令行。在我们的例子中,这是不可能的,因为jar命令在生产服务器上不可用,我们无法添加它
部署war,将其解压缩,然后对生成的文件运行liquibase命令行。这是迄今为止我们找到的唯一解决方案,但有一个主要问题:一旦部署新的war,它就会运行应用程序,而不会首先更新数据库,因此用户会崩溃
还有别的解决办法吗
不幸的是,我们无法找到让grails生成两个工件的方法,war和一个单独的文件(例如tar或zip),其中只包含liquibase文件
我们没有连续构建服务器或pupet脚本或类似的好处,我们只想构建和部署简单的应用程序。Liquibase是实现这一点的一个主要障碍,至少对于grails 2.5应用程序来说是如此,默认情况下,Liquibase 2.0.5捆绑在grails 2.5应用程序中,这在一定程度上是一个障碍
我们可以求助于手动复制migrations目录,压缩它,并将其与war一起提供给客户,但是很容易使这些目录失去同步
不幸的是,我们没有备用服务器,也没有用于自动化或工具的预算
有什么想法或策略吗?我目前使用的grails.plugin.databasemigration.updateOnStart=true
没有问题。具体说明您在使用它时面临的问题我们过去经常使用它,但它无法在mysql 5.6中正确设置自动增量值。当我们在命令行上切换到使用liquibase 3.3.5时,它起了作用。显然,这是liquibase 2.0.5中的众多错误之一。