ruby-on-rails – 令人费解的“重复键”错误(PostgreSQL)
发布时间:2020-12-17 04:05:13 所属栏目:百科 来源:网络整理
导读:首先,让我说我理解关系理论,我和 MySQL中的任何人一样称职,但我是一个完整的PostgreSQL菜鸟. 当我尝试将新记录插入到我的服务表中时 – 仅在生产中 – 我得到了这个: ActiveRecord::RecordNotUnique (PGError: ERROR: duplicate key value violates unique
首先,让我说我理解关系理论,我和
MySQL中的任何人一样称职,但我是一个完整的PostgreSQL菜鸟.
当我尝试将新记录插入到我的服务表中时 – 仅在生产中 – 我得到了这个: ActiveRecord::RecordNotUnique (PGError: ERROR: duplicate key value violates unique constraint "service_pkey" : INSERT INTO "service" ("created_at","name","salon_id","updated_at") VALUES ('2011-02-28 02:34:20.054269','Manicure',1,'2011-02-28 02:34:20.054269') RETURNING "id"): app/controllers/services_controller.rb:46 app/controllers/services_controller.rb:45:in `create' 我不明白为什么.它不应该为我自动增加PK吗? 这是表定义: snip=> d service Table "public.service" Column | Type | Modifiers ------------+-----------------------------+------------------------------------------------------ id | integer | not null default nextval('service_id_seq'::regclass) name | character varying(255) | salon_id | integer | created_at | timestamp without time zone | updated_at | timestamp without time zone | Indexes: "service_pkey" PRIMARY KEY,btree (id) 这是开发中同一个表的定义,它可以正常工作: snip_development=> d service Table "public.service" Column | Type | Modifiers ------------+-----------------------------+------------------------------------------------------ id | integer | not null default nextval('service_id_seq'::regclass) name | character varying(255) | salon_id | integer | created_at | timestamp without time zone | updated_at | timestamp without time zone | Indexes: "service_pkey" PRIMARY KEY,btree (id) 一样!那可能是什么呢? 解决方法
您可能使用数据加载了表,但忽略了将service_id_seq的当前值设置为必需值.您可以只选择SELECT * FROM service_id_seq来检查当前值,并使用setval函数重置它.
例如,SELECT setval(‘service_id_seq’:: regclass,MAX(id))FROM服务;应该将序列重置为表中的当前最大值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |