DBAtlas · 数据库运维图谱

42710: duplicate_object

PostgreSQL

含义

要创建的对象(角色、类型、约束、扩展、模式、索引名等)已存在。PostgreSQL 不允许存在同名/同定义的第二个对象。

原因

在已存在同名对象的情况下运行了 CREATE ROLE、CREATE TYPE、CREATE EXTENSION 或 ADD CONSTRAINT 等命令。通常由脚本运行两次、非幂等的迁移,或两个并发会话试图创建同一对象引起。

解决方法

检查对象是否存在(角色查 pg_roles,类型查 pg_type,扩展查 pg_extension)。以幂等方式编写迁移:在支持的地方使用 CREATE ... IF NOT EXISTS,或先运行 DROP ... IF EXISTS。对于约束冲突,重命名现有约束或删除后重新创建。

在 DBAtlas 中打开 →

同一数据库的其他条目