Mysql 部署服务器上的Grails数据库迁移

Mysql 部署服务器上的Grails数据库迁移,mysql,database,tomcat,grails,database-migration,Mysql,Database,Tomcat,Grails,Database Migration,大家好,我在使用grails数据库迁移插件时遇到了一个问题/困惑 用于研究- 官方Grails数据库迁移插件文档- 数据库迁移示例- 现在,有了这些工具的帮助,我能够很好地在安装了grails并正常工作的本地机器上迁移或更改我的数据库 问题是生产服务器是在线部署的,我总是上传WAR文件部署到ApacheTomcat上。所以它基本上是在JAVA上运行的,所以grails没有安装在ubuntu机器上。 现在,我将如何在服务器上迁移mysql数据库?在config.groovy文件中添加以下配置。迁移

大家好,我在使用grails数据库迁移插件时遇到了一个问题/困惑

用于研究-

  • 官方Grails数据库迁移插件文档-
  • 数据库迁移示例-
  • 现在,有了这些工具的帮助,我能够很好地在安装了grails并正常工作的本地机器上迁移或更改我的数据库

    问题是生产服务器是在线部署的,我总是上传WAR文件部署到ApacheTomcat上。所以它基本上是在JAVA上运行的,所以grails没有安装在ubuntu机器上。
    现在,我将如何在服务器上迁移mysql数据库?

    在config.groovy文件中添加以下配置。迁移将在战争部署期间运行

    //===========================DATA MIGRATION============================
    //Run changelog.groovy during application deployment on server?
    grails.plugin.databasemigration.updateOnStart = true
    //File used to run the db migration scripts
    grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.groovy']
    //Absolute path of changelog.groovy in the app base dir
    grails.plugin.databasemigration.changelogLocation = 'migrations'
    //  the default schema to use when running auto-migrate on start
    //grails.plugin.databasemigration. updateOnStartDefaultSchema ='schema' // You may not need this in MYSQL
    //=====================================================================
    
    根据上述配置,您的文件夹结构应为:

    your-grails-project
          --migrations/
              --changelog.groovy
              --migration1.groovy
              --migration2.groovy
    
    changelog.groovy

    databaseChangeLog = { 
      include file: 'migration1.groovy'
      include file: 'migration2.groovy'
    }    
    

    谢谢你的回复。我的config.groovy中已经有这些行了。我使用两个命令来生成changelog-First-
    grailsdbmupdate
    和second
    grailsdbm gorm diff changelog.groovy--add
    。所以你的意思是我必须在我的本地机器上运行这两个命令来生成变更日志并上传到服务器上,让它自动处理变更吗?我已经编辑了我的答案,请看一看。在进行战争生成之前,您需要拥有这些文件。在web场上会发生什么?如果我有5台web服务器,那么changelog脚本会尝试运行5次吗?@dudemonkey您的5台web服务器是连接到不同的数据库还是都连接到同一个数据库?@dudemonkey OK。因此,liquibase将在数据库中维护一个名为:
    databasechangelog
    的表。此表将包含在此数据库上执行的changelog脚本的所有信息及其校验和。因此,如果您的changelog脚本在所有web服务器中都完全相同,则不应执行多次。