2015-01-13 61 views
0

我試圖執行rake db:migrate命令,但它掛起,我發現了類似的帖子,但無法得到任何適當的解決方案。 我可以沒有任何問題的開發環境中執行這一點,但對主人它掛起:rake db:migrate在主環境中掛起

bundle exec bin/rake db:migrate RAILS_ENV=master 
== AddPublishToPages: migrating ============================================== 
-- add_column(:pages, :publish, :boolean) 

我執行命令,等待大約60分鐘,但我什麼也沒有,這是什麼log/master.log顯示:

Migrating to AddPublishToPages (20150108140428) 
    (0.3ms) BEGIN 

紅寶石,鐵軌耙版本:

ruby -v 
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] 
-- 

bin/rake --version 
rake, version 10.0.4 
-- 

bin/rails --version 
Rails 3.2.12 

bundle -v 
Bundler version 1.1.3 

什麼想法?

+0

你得到了什麼樣的錯誤?你可以發佈一些日誌嗎? –

+0

如果頁表很大,添加一列需要很長時間。影響整個表格的變化通常非常緩慢,並且隨着受影響的數據量的增加而變慢。 – mcfinnigan

+0

你可以試試它與一個空的數據庫嗎?另外,你是否在'config/environments'文件夾下正確設置了'master'環境? –

回答

0

問題已解決,問題是在該特定表上存在很多鎖定會話,這就是爲什麼rake db:migrate無法訪問該特定表。因此,執行下面的查詢顯示鎖會話的數量在桌子上:

SELECT * 
    FROM pg_locks l 
    JOIN pg_class t ON l.relation = t.oid AND t.relkind = 'r' 
WHERE t.relname = 'pages'; 

所以我只是重新啓動postgresql服務器,並解決了這個問題。