5

我最近搬到 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 插件,我想这是一个临时解决方案)。

4

1 回答 1

5

理想情况下,您的应用程序应该通过重试其工作来透明地处理数据库错误,而不会打扰用户。如果一个空闲的数据库后端从它下面被关闭,它不应该关心,它应该只是建立一个新的连接并再次启动事务。不过,我不知道 Rails 和 ActiveRecord 的实用性如何。

另请参阅heroku上“PGError:FATAL:因管理员命令而终止连接”的问题是什么原因?.

Heroku 似乎有时会在进行维护时杀死后端并重新启动服务器,如果您不经常使用,这可能会解释您的问题。

于 2012-08-11T06:40:58.463 回答