我正在从MSSQL迁移数据。 我通过npgsql生成的迁移在PostgreSQL中创建了数据库。我移动了数据,现在当代码尝试插入值时,我得到了 “重复的键值违反了唯一约束”
npgsql尝试插入ID为1.的列。但是表中的ID已经超过一千。
Npgsql.EntityFrameworkCore.PostgreSQL是2.2.3(最新)
在我的上下文生成器中,我有
modelBuilder.ForNpgsqlUseIdentityColumns();
我应该朝哪个方向解决这个问题?
如果数据库为空并且没有任何导入的数据,则代码可以正常运行
谢谢
答案 0 :(得分:2)
在迁移过程中插入的值包含主键值,因此列后面的序列没有增加,而是保持为1。正常插入-未指定PK值-调用序列,得到{{1 }},该表已经存在。
要解决此问题,您可以将序列增加到当前最大值。
1
如果您已经知道序列名称,可以将其缩短为
SELECT setval(
pg_get_serial_sequence('myschema.mytable','mycolumn'),
max(mycolumn))
FROM myschema.mytable;