关于 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删除数据库里提示数据库有连接会话,不能删除怎么办?

相关推荐
数据智能老司机15 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机16 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿16 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
无名之逆16 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s91236010116 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机16 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
hzulwy17 小时前
Redis常用的数据结构及其使用场景
数据库·redis
程序猿熊跃晖17 小时前
解决 MyBatis-Plus 中 `update.setProcInsId(null)` 不生效的问题
数据库·tomcat·mybatis
Three~stone18 小时前
MySQL学习集--DDL
数据库·sql·学习
Qi妙代码18 小时前
MYSQL基础
数据库·mysql·oracle