2010-04-14 49 views
6

有没有简单的方法可以查看由rails迁移生成的实际SQL?查看Rails迁移输出的方式

我有一种情况,在生产服务器上通过部分失败迁移以更改列类型在本地开发计算机上工作。

我的postgreSQL版本是不同的本地和生产(生产7,本地8),所以我希望通过查看在本地成功迁移生成的SQL我可以制定一个SQL语句运行生产到修复东西......

回答

3

我做了一些挖掘,发现了另一种方式这可能也可以实现......(这种方式只给你的SQL所以这是一个容易一点给我读)

PostgreSQL将记录所有的查询执行如果你把这个线在你的配置文件:(有已配置文件的“什么登录”部分被注释掉的例子)

log_statement = 'all' 

然后我回退并重新运行本地我的移民找到我正在寻找的SQL。

该方法还为您提供了一种格式化的SQL,您可以轻松地将其粘贴到PGAdmin的查询构建器之类的内容中并解决它。

+0

非常感谢。我很惊讶没有一种原生轨道的方式来做到这一点。 – 2012-01-05 14:55:10

6

查看日志文件:log/development.log local vs log/production.log在您的服务器上。

+0

感谢弗朗索瓦!你的建议工作正常,但我有一些麻烦,因为我的日志文件是巨大的,有点难以解析...然而,你提醒我一些我前一段时间读到的关于PostgreSQL自己的日志文件的东西,我最终找到了一个解决方案我在找什么。 +1 – 2010-04-14 11:38:30

0

您可以将记录器设置为STDOUT,位于移植的changeupdown方法的顶部。例如:

class SomMigration < ActiveRecord::Migration 
    def change 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 

    # ... 
    end 
end 

还是看this answer添加SQL日志记录所有rake任务