细节:
我最近将一些初始数据上传到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()添加到我的初始数据脚本中.
总结以上是内存溢出为你收集整理的postgresql – 插入初始数据后Postgres抱怨id’已存在’?全部内容,希望文章能够帮你解决postgresql – 插入初始数据后Postgres抱怨id’已存在’?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)