psql:严重:数据库“ db_name”当前不接受连接

Ali*_*i H 2 postgresql ruby-on-rails

我在Postgres 9.3.5数据库上运行了Rails应用程序。在我的开发环境中,它已经启动并运行了一段时间。今天,我进行了Rails迁移,然后当我尝试运行时rake db:reset,收到错误消息:

 psql: FATAL: database "db_name" is not currently accepting connections
Run Code Online (Sandbox Code Playgroud)

现在,这是我尝试运行任何psql或rake db任务时的唯一响应。例如:

  $ psql -d db_name
  psql: FATAL:  database "db_name" is not currently accepting connections
Run Code Online (Sandbox Code Playgroud)

我可以在数据库列表中看到db_name,并且它具有正确的所有者。

是什么导致“当前不接受连接”状态,如何解决?

Cra*_*ger 7

仅当datallowconn在中设置为false时,才会发出该消息pg_catalog.pg_database。这用于保护template0数据库免于意外修改,但是PostgreSQL本身无法做到这一点。

很难想象您是如何在另一个数据库上进入该状态的,除非您手动创建UPDATE系统目录。

有一个未公开的选项ALTER DATABASEallow_connections = false,这将产生同样的结果,但它似乎更不可能,你会做到这一点。

如果您以某种方式在不是保留模板的数据库上遇到这种情况,则可以

UPDATE pg_database SET datallowconn = true WHERE datname = 'my_database';
Run Code Online (Sandbox Code Playgroud)


Ali*_*i H 3

手动删除数据库dropdb

$ dropdb 'db_name'
Run Code Online (Sandbox Code Playgroud)

然后我就可以使用它db:setup来创建一个新的数据库。