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

时间:2015-06-30 20:09:34

标签: ruby-on-rails postgresql

我在Postgres 9.3.5数据库上运行了一个rails应用程序。这一直是&在我的开发环境中运行一段时间。今天我应用了rails迁移,然后当我尝试运行rake db:reset时,我收到错误:

 psql: FATAL: database "db_name" is not currently accepting connections

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

  $ psql -d db_name
  psql: FATAL:  database "db_name" is not currently accepting connections

我可以在dbs列表中看到db_name,它具有正确的所有者。

什么会导致“目前不接受连接”的状态,以及如何解决?

2 个答案:

答案 0 :(得分:3)

使用dropdb手动删除数据库:

$ dropdb 'db_name'

然后我可以使用db:setup为新数据库播种。

答案 1 :(得分:3)

仅在datallowconn中将pg_catalog.pg_database设置为false时才会发出该消息。这用于保护template0数据库免受意外修改,但PostgreSQL本身并没有这样做。

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

ALTER DATABASEallow_connections = false有一个未记录的选项,会产生相同的结果,但您似乎更不可能这样做。

如果你以某种方式进入不是保留模板的数据库,你可以

UPDATE pg_database SET datallowconn = true WHERE datname = 'my_database';