2012-08-10 83 views
5

我最近搬到的Postgres和我得到的形式的間歇性錯誤:與Postgres的起動機層問題

PGError: FATAL: terminating connection due to administrator command 
SSL connection has been closed unexpectedly: 
     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 = '"xxxxxx"'::regclass 
      AND a.attnum > 0 AND NOT a.attisdropped 
     ORDER BY a.attnum 

vendor/bundle/ruby/1.9.1/gems/activerecord-3.0.11/lib/active_record/ 
connection_adapters/postgresql_adapter.rb:505:in `exec' 

我能做些什麼,從回到老Postgres的插件,這是解決這個問題(除我想是一個臨時解決方案)。

+1

你有發送sigterm到postgresql的服務器上的東西嗎? http://archives.postgresql.org/pgsql-general/2010-09/msg00428.php – some 2012-08-10 10:59:22

+0

當然,不在我的控制之下。不知道heroku是否可以做點什麼。該網站的流量很少,因此heroku可能會「暫停」它。 – baldmark 2012-08-10 12:51:49

+0

@baldmark你能解決這個問題嗎?我收到了同樣的錯誤。 Heroku告訴我在其他服務器上移動我的數據庫。 – Nikhil 2014-11-18 06:40:21

回答

5

理想情況下,您的應用程序應該透明地應對數據庫錯誤,方法是重新嘗試其工作而不會給用戶造成任何困擾。如果一個空閒的數據庫後端從它下面關閉,它不應該在意,它應該只是建立一個新的連接並重新啓動事務。我不知道Rails和ActiveRecord是如何實現的。

另請參閱問題What's the cause of "PGError: FATAL: terminating connection due to administrator command" on heroku?

Heroku似乎會在後臺維護時終止並重啓服務器,這可能會解釋您的問題,如果您的使用非常少見。