2010-04-14 63 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任務