django-dbbackup执行报错:pg_dump与PostgreSQL服务器版本不匹配
解决PostgreSQL版本不兼容导致的dbbackup CommandConnectorError问题
方案1:给pg_dump添加兼容参数
pg_dump 15.x可通过特定参数适配16版本的PostgreSQL服务器,直接修改Django配置即可:
- 打开项目的
settings.py,添加或更新以下配置:DBBACKUP_CONNECTORS = { 'default': { 'CONNECTOR': 'dbbackup.db.postgresql.PgDumpConnector', 'OPTIONS': { 'dump_args': ['--no-sync', '--no-comments', '--no-publications', '--no-subscriptions'], }, } } - 保存后重新执行备份命令:
python manage.py dbbackup
方案2:手动安装PostgreSQL 16客户端(Debian系统)
如果官方源无法升级,直接下载对应包安装:
- 下载适配你系统架构的postgresql-client-16包(以amd64为例):
wget https://ftp.postgresql.org/pub/repos/apt/pool/p/postgresql-16/postgresql-client-16_16.0-1.pgdg120+1_amd64.deb - 先安装依赖包,再安装客户端:
sudo apt install libpq5=16.0-1.pgdg120+1 sudo dpkg -i postgresql-client-16_16.0-1.pgdg120+1_amd64.deb - 验证版本:
pg_dump --version,确认输出显示16.0即可
方案3:用Docker临时运行pg_dump 16
如果系统依赖锁死无法升级,用Docker容器绕开限制:
- 替换命令里的路径、密码、主机、用户和数据库名,执行备份:
docker run --rm -v /你的项目绝对路径:/app -e PGPASSWORD=你的数据库密码 postgres:16 pg_dump -h 数据库主机 -U 数据库用户 -d 数据库名 > /app/db_backup.sql - 生成的
db_backup.sql会保存在你的项目目录中,后续可通过dbbackup管理该文件
方案4:直接调用服务器端的pg_dump
如果你能SSH登录数据库服务器,直接使用服务器上的pg_dump 16进行备份:
- 修改
settings.py配置,指定通过SSH执行服务器端的pg_dump:DBBACKUP_CONNECTORS = { 'default': { 'CONNECTOR': 'dbbackup.db.postgresql.PgDumpConnector', 'DUMP_CMD': 'ssh 服务器用户名@数据库服务器地址 "pg_dump"', } } - 提前配置本地服务器到数据库服务器的无密码SSH登录,确保服务器端已安装pg_dump 16
内容的提问来源于stack exchange,提问作者Hossein Sayyedmousavi
相关产品推荐
相关产品推荐

