创建postgres数据库失败

异常:

postgres=# CREATE DATABASE deepflow_agent2;

ERROR: source database "template1" is being accessed by other users

DETAIL: There are 2 other sessions using the database

如何断联这两个session

要解决 PostgreSQL 中因 template1 数据库被占用导致无法创建新数据库的问题,请按以下步骤操作:

1. 查看占用 template1 的会话

复制代码
SELECT 
    pid, 
    usename, 
    application_name, 
    client_addr,
    query_start,
    state
FROM 
    pg_stat_activity 
WHERE 
    datname = 'template1' 
    AND pid <> pg_backend_pid();  -- 排除当前会话

2. 终止占用会话(三种方法)

方法1:逐个终止(推荐)
复制代码
-- 对查询结果中的每个 pid 执行
SELECT pg_terminate_backend(目标pid);  -- 替换为目标pid
方法2:批量终止所有占用会话
复制代码
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'template1'
  AND pid <> pg_backend_pid();
方法3:使用 template0 模板创建(避免冲突)
复制代码
CREATE DATABASE deepflow_agent2 TEMPLATE template0;  -- 使用空白模板

3. 验证会话是否终止

复制代码
SELECT count(*) 
FROM pg_stat_activity 
WHERE datname = 'template1';
-- 返回 1 表示只剩当前会话

4. 重新创建数据库

复制代码
CREATE DATABASE deepflow_agent2;

预防措施:

  1. 永久解决方案

    复制代码
    ALTER DATABASE template1 ALLOW_CONNECTIONS = OFF;  -- 禁止连接模板库
  2. 设置默认模板

    复制代码
    ALTER DATABASE template1 IS_TEMPLATE = false;  -- 取消模板属性
  3. 使用专用模板

    复制代码
    CREATE DATABASE my_template IS_TEMPLATE = true;
    CREATE DATABASE new_db TEMPLATE my_template;  -- 使用自定义模板

关键说明:

  1. pg_terminate_backend() 需要超级用户权限

  2. 生产环境谨慎操作,终止会话可能导致用户操作中断

  3. 使用 template0 是最安全的替代方案,它是不可修改的干净模板

执行后如果仍有问题,检查 PostgreSQL 日志:

复制代码
tail -n 50 /var/log/postgresql/postgresql-*.log
相关推荐
weixin_46688 小时前
安装Zabbix7
数据库·mysql·zabbix
数据库生产实战8 小时前
Oracle 19C实测:重命名分区表后又重命名分区索引,分区索引会失效吗?DBA必看避坑指南!
数据库·oracle·dba
king_harry8 小时前
window server2008下Oracle 配置dblink查询 MySQL 数据
数据库·mysql·oracle·odbc·dblink
chde2Wang8 小时前
hbase启动报错-keeperErrorCode
大数据·数据库·hbase
清平乐的技术专栏8 小时前
HBase Shell常用命令
大数据·数据库·hbase
Zhen (Evan) Wang8 小时前
SQL Server Service Broker启用详解以及常见问题
数据库·sqlserver
马克学长8 小时前
SSM文创产品推荐系统设计与实现95ml5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·高校学生管理数字化·ssm 框架应用·商品分类与信息管理
hzk的学习笔记8 小时前
Redisson 的 Watchdog 机制
数据库·redis·分布式·缓存
罗光记9 小时前
夜晚的梦
数据库·其他·百度·新浪微博·segmentfault
韩立学长9 小时前
基于Springboot的智慧管网灌溉系统i1agupa7(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端