关于 PostgreSQL 删除数据库 - 命令行删除,报错数据库不存在,pgadmin 报错存在会话链接 导致无法删除数据库问题

序言

测试环境:

bash 复制代码
Windows 10

问题

笔者尝试过在 cmd 命令行,使用PostgreSQL 的 psql 工具登录 postgresql,删除某个有问题的数据库,准备新建重载该数据库时,发现 DROP DATABASE database_name ,竟然报错该数据库不存在,可是笔者使用命令 \l查看数据库时,发现那个数据库明明就还在那里存在着,真就古怪了,后面尝试 pgadmin 可视化工具,删除数据库,报错无法删除该数据库,原因是有一些会话链接存在,导致无法手动删除。

解决方法

用超级管理员,如 postgres用户,登录 postgresql,记得输入口令,即密码。

bash 复制代码
psql -U postgres -d postgres

然后在 postgres=# 下运行如下命令:

java 复制代码
SELECT CAST(pg_terminate_backend(pid) AS VARCHAR(10)) FROM pg_stat_activity WHERE datname='test-db';

注意,上述语句里的test-db要替换成您将要删除的数据库名即可;

差别多类似下面的样子,就是成功。

bash 复制代码
pg_terminate_backend
----------------------
true 

然后有一点是需要注意的,之后笔者在 cmd 命令行,使用 DROP DATABASE database_name 命令,依旧无法删除指定的那个问题数据库,最后还是通过 pgAdmin 可视化工具,右键点击数据库 DELETE ,删除数据库。

补充

PostgreSQL 数据库大小写规则

该链接是笔者后面了解到细节问题,关于数据库名要加双引号或单引号,在 PostgreSQL 很关键,最好加上去,当然什么时候用双引号和单引号,经验使然。


参考链接

PGSQL删除数据库里提示数据库有连接会话,不能删除怎么办?

相关推荐
LUCIAZZZ1 小时前
简单的SQL语句的快速复习
java·数据库·sql
Elastic 中国社区官方博客3 小时前
使用真实 Elasticsearch 进行高级集成测试
大数据·数据库·elasticsearch·搜索引擎·全文检索·jenkins·集成测试
@_@哆啦A梦3 小时前
Redis 基础命令
java·数据库·redis
fajianchen3 小时前
MySQL 索引存储结构
数据库·mysql
想做富婆3 小时前
oracle: 多表查询之联合查询[交集intersect, 并集union,差集minus]
数据库·oracle·联合查询
xianwu5435 小时前
反向代理模块jmh
开发语言·网络·数据库·c++·mysql
Leven1995275 小时前
Flink (十三) :Table API 与 DataStream API 的转换 (一)
数据库·sql·flink
geovindu5 小时前
neo4j-community-5.26.0 create new database
数据库·mysql·neo4j
因特麦克斯6 小时前
索引的底层数据结构、B+树的结构、为什么InnoDB使用B+树而不是B树呢
数据库
java1234_小锋7 小时前
说说Redis的内存淘汰策略?
数据库·redis·缓存