修改数据库的脚本其实很简单,如下:
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;
pg_terminate_backend:用来终止与数据库的连接的进程id的函数。
pg_stat_activity:是一个系统表,用于存储服务进程的属性和状态。
pg_backend_pid():是一个系统函数,获取附加到当前会话的服务器进程的ID。
1) 删除数据库也经常会出现此错误,处理方式相同,都是先关闭连接再处理
2)很多数据库的修改或者offline数据库时都需要先关闭对应的连接,例如SQL SERVER。
想要学习PostgreSQL的同学可以学习一下如下两本经典的书籍。
2. mysql8.0新增用户及加密规则修改的那些事
3. 比hive快10倍的大数据查询利器-- presto
4. 监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库
5. PostgreSQL主从复制--物理复制
6. MySQL传统点位复制在线转为GTID模式复制