【Pg数据库】删除数据库失败,提示有session正在连接

问题现象

Navicat 删除 PostgreSQL 数据库时失败,提示:正在被其他用户访问(有session正在连接)如何处理?
如下所示:

ERROR: database 'xXx' is being accessed by other users
DETAIL: There are 5 other sessions using the database.

在这里插入图片描述

原因分析

  • 可能当前仍有session正在连接数据库,或者有session在不停地连接该数据库,故删除数据库失败。
  • 需要查看数据库中的session,检查是否仍有session在连接,如果有,排查连接数据库的机器,停止连接后再删除数据库。

处理方法

1.断开所有连接

SELECT 
	pg_terminate_backend(pg_stat_activity.pid)
FROM 
	pg_stat_activity
WHERE 
	datname='数据库' 
AND 
	pid<>pg_backend_pid();

2. 查找相关连接数据库的主机信息

(如果有程序会不停的连的话只能把连的程序停了才能删除)

SELECT 
	*
FROM 
	pg_stat_activity
WHERE 
	datname='数据库' 

3. 再次删除

drop database 数据库;

总结

在这里插入图片描述

4. 若依旧删除数据库失败

若还是显示一直有连接,删除数据库失败,可以考虑只删除删除数据库下的所有表
参考博文: 删除数据库下的所有表

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Flask 中连接 PostgreSQL 数据库可以使用 Flask 的扩展模块 Flask-SQLAlchemy。 首先,需要安装 psycopg2-binary 和 Flask-SQLAlchemy: ```bash pip install psycopg2-binary Flask-SQLAlchemy ``` 然后,在 Flask 应用程序中配置数据库连接: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://username:password@localhost/mydatabase' db = SQLAlchemy(app) ``` 其中,`username` 和 `password` 分别是 PostgreSQL 数据库的用户名和密码,`mydatabase` 是要连接数据库名。 现在,可以通过 `db` 对象来操作数据库了,例如: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://username:password@localhost/mydatabase' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.username ``` 这里定义了一个 `User` 模型,它对应数据库中的一个表。可以使用 `db.create_all()` 来创建表格,并使用 `db.session` 来进行数据库操作,例如: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://username:password@localhost/mydatabase' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.username db.create_all() user = User(username='john', email='john@example.com') db.session.add(user) db.session.commit() users = User.query.all() print(users) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大龄烤红薯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值