【问题标题】:Why am I not able to drop postgres database为什么我无法删除 postgres 数据库
【发布时间】:2020-09-23 08:23:11
【问题描述】:

我正在尝试删除一个 postgres 数据库。但我总是得到一个

还有 1 个会话正在使用该数据库

错误。

我尝试使用此命令停止所有会话

select pg_terminate_backend(pid) from pg_stat_activity where datname='my_database';

这就是结果

pg_terminate_backend
----------------------
(0 rows)

然后我使用了这个命令

DROP DATABASE my_database;

这是完整的错误信息

ERROR:  database "my_database" is being accessed by other users
DETAIL:  There is 1 other session using the database.

我正在使用 postgres 12。

【问题讨论】:

  • 您是否已连接到您要删除的数据库?
  • 是的。我还尝试使用 pgadmin 删除数据库。面临同样的错误
  • 您需要连接到一个不同的数据库。你不能删除你连接的数据库
  • 我该怎么做?
  • 与您连接到该数据库的方式相同,只是提供不同的数据库名称。

标签: sql postgresql drop-database


【解决方案1】:
  1. 确保没有用户可以连接到您的数据库(超级用户权限,超级用户仍然可以连接):

    ALTER DATABASE mydb CONNECTION LIMIT 0; 
    
  2. 强制断开连接到该数据库的所有客户端(数据库所有者权限):

    SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE datname = 'mydb';
    
  3. 然后使用你的 drop 命令删除数据库(数据库所有者权限):

    DROP DATABASE mydb;
    

【讨论】:

  • 嗨。你能更清楚地解释第一部分吗?我是 sql 新手
  • 第一部分确保没有人可以连接到您的数据库(超级用户除外),因此您限制了数据库的连接,它是可选的,但是如果您的用户继续使用数据库并且您不希望他们,那么您可以使用它并限制用户连接到数据库
猜你喜欢
  • 2019-06-02
  • 2015-05-03
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2012-12-19
  • 2017-08-18
相关资源
最近更新 更多