我在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,它具有正确的所有者。
什么会导致“目前不接受连接”的状态,以及如何解决?
答案 0 :(得分:3)
使用dropdb
手动删除数据库:
$ dropdb 'db_name'
然后我可以使用db:setup
为新数据库播种。
答案 1 :(得分:3)
仅在datallowconn
中将pg_catalog.pg_database
设置为false时才会发出该消息。这用于保护template0
数据库免受意外修改,但PostgreSQL本身并没有这样做。
很难想象你是如何在另一个数据库上进入该状态的,除非你手动UPDATE
系统目录。
ALTER DATABASE
,allow_connections = false
有一个未记录的选项,会产生相同的结果,但您似乎更不可能这样做。
如果你以某种方式进入不是保留模板的数据库,你可以
UPDATE pg_database SET datallowconn = true WHERE datname = 'my_database';