2014-03-06 63 views
0

在回滾遷移中刪除了一個表。遷移本身發生了變化,因此向下部分丟棄了該表。 我跑創建該表再次ruby​​刪除了表,但無法通過遷移重新創建

rake db:migrate:redo VERSION=20120912122332 

== CreateQuestionnaires: reverting ===================================== 
-- drop_table("questionnaires") 
rake aborted! 
PG::Error: ERROR: table "questionnaires" does not exist 

它看起來好像重做它試圖刪除該表在遷移之前遷移。由於它不存在,其餘的遷移無法運行。 這是正確的,如果是這樣,我該如何重新創建表格

+0

請出示您的遷移... –

+0

我認爲你誤解了'重做'。這是一個「下」,然後是「上」。 –

回答

1

該表已被刪除。

我會建議你使用

rake db:migrate VERSION=20120912122332 

如重做將再次嘗試回滾,即落,你已經下降在前期的表。因此,你正在失敗。

+0

此命令嘗試恢復VERSION = 20120912122332之後的遷移,並且其中一些失敗 – maggs

+0

除非您未在命令中指定版本,否則此命令只會運行版本爲「20120912122332」的遷移。 –

+0

請確保您只有一個版本前綴爲20120912122332 db/migrate文件夾的遷移文件 –

0

您可以編輯遷移和手工做DROP TABLE,這將讓你添加一個IF EXISTS忽略DROP TABLE如果表不存在:

def down 
    connection.execute('drop table if exists questionnaires') 
end