2016-05-16 85 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。 –