在 TypeORM 上接收“QueryFailedError:重复键值违反唯一约束”“pg_type_typname_nsp_index”错误

Posted

技术标签:

【中文标题】在 TypeORM 上接收“QueryFailedError:重复键值违反唯一约束”“pg_type_typname_nsp_index”错误【英文标题】:Receiving "QueryFailedError: duplicate key value violates unique constraint "pg_type_typname_nsp_index" error on TypeORM 【发布时间】:2021-08-17 18:08:10 【问题描述】:

我使用 TypeORM 启动了一个项目,但遇到了问题。我在 TypeORM 配置中将同步选项设置为 true,但是当我运行应用程序时,我收到以下错误:QueryFailedError: duplicate key value denied unique constraint "pg_type_typname_nsp_index"

我已经阅读了一些关于它的内容,但我发现的唯一内容是有人说它与并行运行测试有关,而不是我遇到的同一个问题。

可能与 async/await 相关,这里是数据库连接部分:

export const databaseProviders = [
    
        provide: 'DATABASE_CONNECTION',
        useFactory: async () => await createConnection(
            type: "postgres",
            host: process.env.TYPEORM_HOST.toString(),
            port: Number(process.env.PORT),
            username: process.env.TYPEORM_USER.toString(),
            password: process.env.TYPEORM_PASSWORD.toString(),
            database: process.env.TYPEORM_DATABASE,
            entities: [
                 __dirname + '/../**/*.entity.ts,.js',
            ],
            synchronize: true,
            logging: true
        )
    
]

我不打算在生产中使用这个项目,我希望 TypeORM 为我生成表格,就是这样。也许我可以通过将同步设置为 false 并使用迁移来解决这个问题。

它似乎正在创建或尝试创建表 3 次。

无论如何,希望有人可以帮助我。

【问题讨论】:

【参考方案1】:

我也有同样的问题。

我使用了两次定义相同的索引。

  @Index( unique: true )
  @Column( type: 'varchar', nullable: true, unique: true )

【讨论】:

以上是关于在 TypeORM 上接收“QueryFailedError:重复键值违反唯一约束”“pg_type_typname_nsp_index”错误的主要内容,如果未能解决你的问题,请参考以下文章

在 heroku 上部署 typeorm/typescript 应用程序

在 TypeORM 与 GraphQL 的多对多关系上使用数据加载器,查询多对多

使用 TypeORM 在 Postgres bytea 上保存缓冲区仅存储 10 个字节

对 Type-graphql 和 Typeorm 实体中的外键字段使用 ID 标量类型在语义上是不是正确?

TypeORM CLI - 如何在特定数据库上运行迁移

Nest.js TypeORM 连接到本地数据库(在 docker 容器上)