代码之家  ›  专栏  ›  技术社区  ›  thekingoftruth

如何从Rails迁移(用于MySQL)中获取更改的SQL脚本?

  •  0
  • thekingoftruth  · 技术社区  · 14 年前

    我见过 http://github.com/muness/migration_sql_generator 但在某些重要的操作中,它不能与MySQL一起正常工作。有没有其他方法可以捕获在Rails迁移期间生成的SQL?

    我之所以问这个问题是因为我不能在生产服务器上运行迁移,因为它是由我公司的技术支持维护的(开发人员从未接触过)。开发人员向技术支持人员提供一个JRuby on Rails war文件,并通过Tomcat部署它。但是,说服技术支持安装JRuby和Rails只是为了在生产环境中运行迁移绝对不容易。我们希望保持部署非常简单,并且依赖性尽可能少。

    我们只想为它们提供一个war文件和一个带有db更改的SQL脚本。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    8 年前

    您可以使用某种工具生成两个数据库的差异。有个问题要问 here .

    如果在运行迁移之后将测试数据库与开发数据库进行比较,这可能是最简单的方法。甚至有必要添加一个rake任务来完成它;让那个rake任务依赖于迁移,然后您可以使用新任务而不是 rake db:migrate 以在每次迁移时生成差异。

        2
  •  0
  •   thekingoftruth    14 年前

    实际上,我最终创建了一个rake任务,monkey修补了ActiveRecord的SQL执行方法,并将所有SQL输出到一个日志文件中。( log/database.log )因此,任务可以在之前运行 db:migrate 像这样: rake db:log db:migrate . 之后,您可以提取相关的语句并将它们放入 db/sql_migrations/<migration name>.sql 文件并让数据库管理员在准备好后运行它。

    谢天谢地,我已经换了工作,不必再去处理这个混乱的过程了。:)