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。对于约束冲突,重命名现有约束或删除后重新创建。