PostgreSQL 10执行DROP DATABASE WITH FORCE报错的原因排查
DROP DATABASE WITH (FORCE) 语法错误原因及处理方案
错误原因
PostgreSQL 10版本不支持DROP DATABASE语句的FORCE参数——该参数是PostgreSQL 13才新增的特性,作用是强制断开目标数据库的所有连接并完成删除。由于10版本的语法体系中不存在这个参数,执行包含WITH (FORCE)的语句时,就会触发syntax error at or near "WITH"的语法错误。
PostgreSQL 10中强制删库的替代操作
如果需要在PostgreSQL 10里删除正在被连接的数据库,需要分两步操作:
- 先切换到非目标数据库(比如系统默认的
postgres库):\c postgres - 终止目标数据库的所有活跃连接:
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'my_database'; - 执行删除数据库语句:
DROP DATABASE IF EXISTS my_database;
更新记录
将数据库迁移至PostgreSQL 16集群并使用默认端口5432后,由于16版本原生支持FORCE参数,原语句DROP DATABASE IF EXISTS my_database WITH (FORCE);可正常执行,问题已解决。
内容的提问来源于stack exchange,提问作者Arno van Oordt
相关产品推荐
相关产品推荐

