You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres中Django迁移遇唯一约束已存在错误的解决方法

解决Django迁移Postgres时唯一约束已存在的问题

步骤1:连接远程Postgres数据库并查询冲突约束

首先通过psql连接到你的远程Postgres数据库:

psql -h <远程主机地址> -U <数据库用户名> -d <项目数据库名>

进入数据库后,执行以下SQL查询api_mytable表的所有唯一约束:

SELECT conname
FROM pg_constraint
WHERE conrelid = 'api_mytable'::regclass
AND contype = 'u';

执行后会列出该表所有唯一约束的名称,其中包含导致报错的api_mytable_myfield1_myfield2_cb8c1059_uniq。

步骤2:删除冲突的唯一约束

确认目标约束后,执行SQL删除该约束:

ALTER TABLE api_mytable
DROP CONSTRAINT api_mytable_myfield1_myfield2_cb8c1059_uniq;

注意:替换上述命令中的约束名为你实际查询到的冲突约束名称,避免误删其他有效约束。操作前建议备份数据库。

步骤3:重新执行Django迁移

回到项目环境,运行迁移命令即可正常执行:

python manage.py migrate

补充说明

出现此问题通常是因为之前手动创建过该唯一约束,或者某次迁移执行中断但约束已被创建,而Django的迁移记录未同步更新,导致本次迁移尝试重复创建约束。

内容的提问来源于stack exchange,提问作者Yatharth Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:04:57