postgresql – 插入初始数据后Postgres抱怨id’已存在’?
发布时间:2020-12-13 15:58:20 所属栏目:百科 来源:网络整理
导读:我有一个问题,Postgres在导入一些初始数据后抱怨重复ID,我试图看看如何增加id列计数器? 细节: 我最近将一些初始数据上传到Postgres表中,其中id设置为我的Sequelize模型定义中的自动增量.例如: sequelize.define('user',{ id: { type: Sequelize.INTEGER,p
我有一个问题,Postgres在导入一些初始数据后抱怨重复ID,我试图看看如何增加id列计数器?
细节: 我最近将一些初始数据上传到Postgres表中,其中id设置为我的Sequelize模型定义中的自动增量.例如: sequelize.define('user',{ id: { type: Sequelize.INTEGER,primaryKey: true,autoIncrement: true },name: Sequelize.STRING } 数据插页如下: INSERT INTO "users" ("id","name") VALUES(1,"bob"); INSERT INTO "users" ("id","name") VALUES(2,"brooke"); INSERT INTO "users" ("id","name") VALUES(3,"nico"); 现在从我的node.js应用程序尝试插入新记录时,它抱怨Key(id)=(1)已经存在. SQL Sequelize使用的形式如下: INSERT INTO "users" ("id","name") VALUES(DEFAULT,"nico"); 如果我清空记录表并再次尝试这个或重试操作足够多次,那么我看到计数器确实增加了.问题似乎Postgres根据记录无法判断当前的最大ID是多少? 在将初始数据上传到数据库之后,告诉Postgres更新计数器的正确方法是什么? BTW使用Postgres 9.6 解决方法
经过一番搜索后发现这将完成我需要做的事情.
SELECT setval('users_id_seq',max(id)) FROM users; 此代码将id设置为表中的当前最大ID,这里是我的users表.注意,要检查序列是否与列相关联,这将起作用: SELECT pg_get_serial_sequence('patients','id') 唯一需要注意的是你忽略了’公众’.部分返回值. 我将setval()添加到我的初始数据脚本中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |