2012-10-03 41 views
21

我一直在使用heroku作爲我的一個應用程序,並且由於行數超過10,000行而今天關閉。Heroku行數錯誤

我不理解這個數字是如何得出的,因爲rails告訴我在db中只有大約2000條記錄。

運行PG:信息,我看到以下內容:

Plan:  Dev 
Status:  available 
Connections: 1 
PG Version: 9.1.5 
Created:  2012-09-25 03:12 UTC 
Data Size: 11.0 MB 
Tables:  9 
Rows:  15686/10000 (Write access revoked) 
Fork/Follow: Unavailable 

任何人都可以向我解釋,我怎麼好像擁有1.5行雖然只有2,000個記錄在數據庫中?

謝謝!

+0

雖然我在5分鐘前截斷了一個表,並重新啓動了我的應用程序,但它顯示「寫入訪問被取消」,但行數不正確,我也是這樣。 – microspino

+0

更新:30分鐘後'heroku pg:info'報告正確的記錄數。 – microspino

+1

謝謝!我也會推薦'heroku maintenance:on'更新你的桌面或'TRUNCATE your_table'然後'heroku maintenance:off'。它對我來說非常完美。 [鏈接](https://devcenter.heroku.com/articles/maintenance-mode) – hernanvicente

回答

42

單靠Rails是不夠的。 Heroku的有,你可以通過訪問一個很好的SQL控制檯:

heroku pg:psql YOUR_DB_URL 

,那麼你可以這樣寫查詢獲得的每個表記錄的排名:

SELECT schemaname,relname,n_live_tup 
    FROM pg_stat_user_tables 
    ORDER BY n_live_tup DESC; 

如果您只需要更新NUM。行,你可以使用

SELECT sum(n_live_tup) FROM pg_stat_user_tables; 

請注意,您可以同時擁有新的開發計劃DB和舊的共享一個在你的配置(通過heroku pg:info訪問它)。你必須插入正確的數據庫網址,可能是一個顏色。

允許任何sql truncateRows計數之間的30分鐘延遲更新。

順便說一句,在我的情況下,http://heroku.com的Web控制檯更新了正確的數量。在我的SQL查詢期間。可能是heroku toolbelt控制檯更新,速度較慢。

+0

謝謝 - 事實證明會話數據庫中有一些瘋狂的行,並且我沒有通過檢查我的所有rails來關閉它楷模。 夢幻般的回答:) – Averenix

+0

謝謝@microspino – hernanvicente

1

我接觸的Heroku支持這一點,他們運行以下命令來獲取我的號碼...

$ heroku pg:info 
0

30分鐘是不夠的我,所以我花了備份和恢復的數據庫。然後我的應用程序重新上線。