2011-03-02 77 views
4

工作我有使用發電機Rails 3的遷移不會在Heroku

class AddEmailToUsers < ActiveRecord::Migration 
    def self.up 
    add_column :users, :email, :string 
    end 

    def self.down 
    remove_column :users, :email 
    end 
end 

它的偉大工程在當地

rake db:migrate 
rails console 
>> User.column_names 
=> ["id", "created_at", "updated_at", "uid", "provider", "name", "role", "email"] 

我在Heroku上的應用程序的兩個版本創造了一個非常簡單的遷移。其中之一,它工作正常。另一方面,這個專欄根本沒有出現。

從Heroku的耙分貝輸出:遷移期待權:

== AddEmailToUsers: migrating ================================================ 
-- add_column(:users, :email, :string) 
    -> 0.0031s 
== AddEmailToUsers: migrated (0.0032s) ======================================= 

但該列不存在:

>> User.column_names 
=> ["id", "created_at", "updated_at", "uid", "provider", "name", "role"] 

(順便說一句,我的所有數據庫更改已通過發電機創建的遷移;我自己也沒有碰過SQL,也沒有編輯過任何遷移文件。)

這是一個生產環境,所以丟棄表不是一個選項。

我可以嘗試的任何建議嗎?

+0

你重新啓動了你的控制檯嗎?另外,檢查你的數據庫在heroku上的更新表,以防萬一。 – Shreyas 2011-03-02 18:34:18

+0

通過「重新啓動控制檯」,你的意思是再次運行heroku控制檯?如果是這樣,那麼是的,我做到了。 – 2011-03-02 18:35:37

+0

如何檢查Heroku上的數據庫?我可以直接在Heroku中運行SQL命令嗎? – 2011-03-02 18:36:01

回答

12

heroku restart

修復了我的問題。

我認爲這是一個在heroku系統中的錯誤。我剛剛通過電子郵件向他們要求解決問題。

0

你運行過「heroku rake db:migrate」嗎?這不是在本地運行遷移,而是在Heroku上運行。

+0

謝謝,是的,我做到了。 – 2011-03-03 22:26:19