无法将新行插入到postgres数据库表中?
我有一个问题,我试图插入新行到一个Postgres数据库表,并收到以下错误无法将新行插入到postgres数据库表中?
ERROR: duplicate key violates unique constraint "n_clients_pkey"
这里我查询
insert into n_clients(client_name) values('value');
我使用的Postgres 8.1。 11
PostgreSQL 8.1.11 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14)
下面是我的表结构
Table "public.n_clients"
Column | Type | Modifiers
-------------+--------------------------+-----------------------------------------------------------------------
id | integer | not null default nextval(('public.n_clients_id_seq'::text)::regclass)
client_name | character varying(200) | not null
moddate | timestamp with time zone | default now()
createdate | timestamp with time zone | default now()
Indexes:
"n_clients_pkey" PRIMARY KEY, btree (id)
和序列
Sequence "public.n_clients_id_seq"
Column | Type
--------------- + --------- SEQUENCE_NAME |名字 last_value | bigint increment_by | bigint max_value | bigint min_value | bigint cache_value | bigint log_cnt | bigint is_cycled |布尔值 is_called | boolean
该行已经存在,因此不能将其插入。你们关系的主要关键是什么?这是一个序列吗?如果是这样,也许它卡住了(也许你导入的数据)。你应该手动将它重置为下一个可用的空闲ID(例如,如果最大ID是41,你应该这样做:SELECT setval('your_seq',42);)然后再试一次。
序列卡住了 – Roland 2009-09-23 11:10:01
典型地,一个通过手动添加的记录与针对序列中的当前值相匹配的id字段进入这种情况。例如,通过一些常见的转储/重新加载操作很容易介绍这一点。我在Fixing Sequences的整个数据库中写了一篇关于纠正这类错误的文章。
跆拳道是你与8.1版本从一个世纪前在做什么? 8.4显示一个更好的错误消息:
错误:重复键值违反唯一约束 “master_pkey” 详细信息:按键(ID)=(1)已经存在。
你能为n_clients表添加您的CREATE TABLE命令。 – 2009-09-23 11:06:17
我更新了我的问题,请看我的表格结构 – Roland 2009-09-23 11:08:32