2016-05-16 218 views
1

我在我们的生产服务器上的PG 9.2.14 woking我正面临一些随机问题。Postgresql重复的主键

假设它的表名为usersid是其中的主键。

当我试图重新索引它给我下面的错误表: -

ERROR: could not create unique index "users_pkey" 
DETAIL: Key (id)=(339) is duplicated. 

当我试图与339 ID获取用户,没有记录。我不确定它的PG错误或我做错了什么。

有人遇到过这样的问题吗?

+0

我想知道现有的索引是否可能用于构建这个新索引,而现有的索引是否已损坏。 –

+0

@DavidAldridge任何想法如何解决? –

+0

您确定您连接到psql控制台和应用程序中的同一个数据库吗? –

回答

1

确切的问题是有相同的重复行id

我不确定它是如何进入数据库的,因为在创建表格时存在主键问题。

的解决方案是,我不得不删除主键约束

alter table users drop constraint users_pkey; 

然后使用该ID拉到重复记录。

Select * from users where id = 339; 

现在,它显示了我约4-5行具有相同的ID,删除这些行,它的工作。

我不确定在列上有primary key constraint为什么PG不显示重复记录,如果它的错误在PG或功能。

2

检查数据库。您希望添加索引的表中已经存在重复值。检查表中的空值。好像有多行在user_id中取值为空值。

删除重复项,您将能够添加索引。快乐编码:)

+0

为了检查这个'select id,count(*)from users group by id count(*)> 1;'0 record。 –