我有一個使用Rails 3.1和Postgres 9.0的工作設置,只是將升級的Rails升級到3.2.1和Postgres 9.1.2。升級Postgres和Rails後,我無法讓我的遷移回到正軌
升級postgres意味着遷移數據爲2個版本的數據存儲不兼容。無論如何,我並不在乎遷移本地數據庫中的數據,因爲它們都用於開發目的。所以我試圖用Rails遷移(或w/schema)重新創建我的數據庫。然而,無論我嘗試什麼,我都無法讓遷移運行。
無論使用
rake db:migrate
或
rake db:reset
與我的Postgres運行此9.1.2設置給了我:
spif: > rake db:migrate
rake aborted!
PG::Error: ERROR: relation "users" does not exist
LINE 4: WHERE a.attrelid = '"users"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
起初,我雖然它可能是, pg gem不支持Rails 3.2.1,所以用sqlite3也是如此,但是這給我找不到相同的用戶:
spif: > rake db:reset
rake aborted!
Could not find table 'users'
所以它看起來像Rails預計的用戶表的地方。
我不知道如何找出什麼代碼實際上調用了這個。當我使用--trace運行遷移命令時,顯示的是ActiveRecord內部進行的操作。這可能是ActiveRecord 3.2.1中的一個錯誤(我將如何去發現它?)。
我可以使用psql和config/database.yml中的用戶設置連接到pg db的正常狀態。 rails會期望一些可以查詢用戶的postgres表嗎?
我已經完全刪除了我的db/migrate目錄和db/schema.rb以確保在那裏沒有一些奇怪的內部依賴關係,但也無濟於事。
我敢肯定,我錯過了一些簡單的概念 - 我還沒有嘗試過經常到我的分貝從頭開始復位,所以我希望有一個簡單的解釋。
非常感謝,非常感謝。
你有用戶模型嗎? – 2012-01-29 18:49:55
是的,但是它在遷移中,所以應該運行... – 2012-01-30 08:07:59
你有什麼可以嘗試在Rails初始化期間預加載User類,以及*遷移之前有沒有機會運行。 ActiveAdmin過去一直是類似情況的嫌疑犯。 – 2012-01-30 09:33:38