PostgreSQL修改数据库名

·  阅读 513

PostgreSQL修改数据库名

图片

修改数据库名
修改数据库的脚本其实很简单,如下:

alter  database  db1  rename  to  db2;
复制代码

但处理时检查如遇到如下的错误信息,导致无法修改库名,错误信息如下:

ERROR:  database "db1" is being accessed by other users
DETAIL:  There are 17 other sessions using the database.

复制代码

处理办法:因提示的是数据库正在被其他用户所使用,所以需要先关闭连接该库的会话即可。
关闭连接的方式在PostgreSQL9.2及以上版本可以直接通过以下方式处理:

 SELECT pg\_terminate\_backend(pg\_stat\_activity.pid)
FROM pg\_stat\_activity WHERE datname='db1' AND pid<>pg\_backend\_pid();
-- 再次修改
 alter database db1 rename to db2;
复制代码

以上SQL简单说明一下:

pg\_terminate\_backend:用来终止与数据库的连接的进程id的函数。
pg\_stat\_activity:是一个系统表,用于存储服务进程的属性和状态。
pg\_backend\_pid():是一个系统函数,获取附加到当前会话的服务器进程的ID。
复制代码

PS:
1)  删除数据库也经常会出现此错误,处理方式相同,都是先关闭连接再处理
2)很多数据库的修改或者offline数据库时都需要先关闭对应的连接,例如SQL SERVER。

想要学习PostgreSQL的同学可以学习一下如下两本经典的书籍。

image.png

往期精彩回顾

MySQL高可用之MHA集群部署 mysql8.0新增用户及加密规则修改的那些事

监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

MySQL敏感数据加密及解密

MySQL数据备份及还原(一)

MySQL数据备份及还原(二)

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改