删除的数据库仍然显示但导致错误 PostgreSQL

sta*_*rty 5 postgresql psql

几周前我删除了一个数据库,但它仍然显示为\l. 我试过使用DROP DATABASE mixmobi_master;,第一次它给了我一条确认消息,但mixmobi_master仍然出现\l. 现在,当我再次尝试该命令时,我得到:

template1=# \l

template1=# drop database mixmobi_master;
ERROR:  database "mixmobi_master" does not exist

template1=# \l
                                 List of databases
      Name           | Owner | Encoding |   Collate   |    Ctype    | Access privileges 
-------------------------+-------+----------+-------------+-------------+-------------------
biterator_development   | kyle  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
mixmobi_master          | kyle  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
plantjotter_development | kyle  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
postgres                | atmos | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
template0               | atmos | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/atmos         +
                        |       |          |             |             | atmos=CTc/atmos
template1               | atmos | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/atmos         +
                        |       |          |             |             | atmos=CTc/atmos
(6 rows)
Run Code Online (Sandbox Code Playgroud)

每隔几分钟左右它也会给我这个错误信息:

FATAL:  database "mixmobi_master" does not exist
DETAIL:  It seems to have just been dropped or renamed.
Run Code Online (Sandbox Code Playgroud)

有人有建议吗?我正在运行 Lion 并使用过 Atmos 的 Cinderella 环境。


编辑


我使用了@Erwin 的建议并得到了这个:

template1=# SELECT * FROM pg_stat_database WHERE datname = 'mixmobi_master';

datid |    datname     | numbackends | xact_commit | xact_rollback | blks_read | blks_hit | tup_returned | tup_fetched | tup_inserted | tup_updated | tup_deleted | conflicts |          stats_reset          
-------+----------------+-------------+-------------+---------------+-----------+----------+--------------+-------------+--------------+-------------+-------------+-----------+-------------------------------
16387 | mixmobi_master |           0 |           9 |          2118 |       262 |     1826 |         2181 |        1157 |            0 |           0 |           0 |         0 | 2012-01-24 11:47:34.692079-06
(1 row)

template1=# SELECT pg_terminate_backend(procpid)
template1-# FROM   pg_stat_activity
template1-# WHERE  datname = 'mixmobi_master';
pg_terminate_backend 
----------------------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

还有其他人有什么建议吗?我仍然收到这些错误,到目前为止没有任何效果!在此先感谢您的时间!

Erw*_*ter 3

我猜想您最初删除数据库时您已经打开了连接/事务并且 DROP 以某种方式停止了。

您可以通过统计视图获取有关数据库的更多信息。例如:

SELECT * FROM pg_stat_database WHERE datname = 'mixmobi_master';
Run Code Online (Sandbox Code Playgroud)

如果您发现打开的后端进程,您可能需要像这样关闭它们:

SELECT pg_terminate_backend(procpid)
FROM   pg_stat_activity
WHERE  datname = 'mixmobi_master';
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此处的手册。

在这个相关答案中找到一种安全的方法来删除负载下的数据库:


归档时间:

查看次数:

1306 次

最近记录:

10 年,8 月 前