postgresql - 导入数据,重复键值违反唯一约束

标签 postgresql asp.net-core npgsql

我正在从 MSSQL 迁移数据。 我通过 npgsql 生成的迁移在 PostgreSQL 中创建了数据库。我移动了数据,现在当代码尝试插入一个值时,我得到了 “重复的键值违反了唯一约束”

npgsql 尝试插入 Id 为 1 的列..然而该表的 Id 已经超过一千。

Npgsql.EntityFrameworkCore.PostgreSQL 是 2.2.3(最新)

在我的上下文构建器中,我有

 modelBuilder.ForNpgsqlUseIdentityColumns();

我应该从哪个方向挖掘来解决这样的问题?

如果数据库为空并且没有任何导入的数据,代码运行正常

谢谢

最佳答案

迁移期间插入的值包含主键值,因此列后面的序列不会递增并保持为 1。正常插入 - 不指定 PK 值 - 调用序列,获取 1,该表已存在于表中。

要修复此问题,您可以将序列提高到当前最大值。

SELECT setval(
        pg_get_serial_sequence('myschema.mytable','mycolumn'), 
        max(mycolumn)) 
FROM myschema.mytable;

如果您已经知道序列名称,可以将其缩短为

SELECT setval('my_sequence_name', max(mycolumn)) 
FROM myschema.mytable;

关于postgresql - 导入数据,重复键值违反唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55423647/

相关文章:

iis - 使用IIS部署asp.net core网站时出现502.5错误

c# - 使用 npgsql 执行 postgres 脚本

sql - PostgreSQL - 返回键值对数组的最佳方式

ruby-on-rails - Rails 3.2 - #<Array :. 的未定义方法 `where' .. - Model.where() 的查询

entity-framework - 验证服务描述符时出错 'ServiceType: Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory` 1

javascript - ASP Net Core FileContentResult音频文件到Safari

c# - 如何修复 Mono 3.0.3、Entity Framework 6 Beta2 和 Npgsql 上 MVC3 项目的 DbProviderServices 继承错误?

PostgreSQL - 按存储顺序检索项目

postgresql - postgis 高级(?)选择查询

sql - 一条记录中的多行