Postgres入门级问题

bal*_*ark 5 postgresql heroku

我最近搬到了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'
Run Code Online (Sandbox Code Playgroud)

我能做些什么来绕过这个(除了回到旧的Postgres Addon,这是我认为的临时解决方案).

Cra*_*ger 5

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

另请参阅问题Heroku上的"PGError:致命:由于管理员命令而终止连接"的原因是什么?.

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