# ECCEZIONE: psql fallito: DETTAGLIO: Key (post\_id)=(36946) è duplicata.

**URL:** https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356
**Category:** Self-hosting
**Created:** [18 Giugno 2022, 5:24am UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356 "2022-06-18T05:24:27Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![MiG](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mig/32/119486_2.png) [@MiG](https://meta.discourse.org/u/MiG)
#### Post date: [18 Giugno 2022, 5:24am UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/1 "2022-06-18T05:24:27Z")

</div>

Sto cercando di migrare il mio server a un nuovo host, quindi ho scaricato un file di backup e l’ho caricato sul nuovo host. Ho installato una copia fresca di Discourse e ho seguito le istruzioni per farlo dalla riga di comando:

> [@Restore a backup from the command line](https://meta.discourse.org/t/restore-a-backup-from-command-line/108034):
>
> bookmark This guide explains how to restore a Discourse backup from the command line without using the Discourse web UI. person_raising_hand Required user level: Administrator wrench Console access required Here’s how to restore a Discourse backup from the command line, without ever booting the Discourse web UI. This is handy when you’re moving servers. Prerequisites Before you start, make sure you complete the following steps: Download the latest backup file from the source Disco…

Sfortunatamente, il comando `discourse restore databasename` fallisce con:

```plaintext
ALTER TABLE
ALTER TABLE
ALTER TABLE
ERROR: could not create unique index "posts_search_pkey"
DETAIL: Key (post_id)=(36946) is duplicated.
EXCEPTION: psql failed: DETAIL: Key (post_id)=(36946) is duplicated.
/var/www/discourse/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:149:in `restore'

```

Sembra che ci sia qualcosa che non va nel file del database? Qualcuno può darmi indicazioni su come posso risolvere questo errore? Ho ancora accesso al server originale, che sembra funzionare correttamente.

C’è qualche comando SQL o qualcos’altro che posso eseguire per analizzare (e correggere?) il database prima di scaricare un backup?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [18 Giugno 2022, 10:49pm UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/2 "2022-06-18T22:49:51Z")

</div>

Sembra che tu abbia un indice corrotto. Di che versione di postgres si tratta?

Ci sono alcuni argomenti a riguardo. Puoi provare a reindicizzare quella tabella sull’istanza in esecuzione e quindi eliminare o correggere gli ID duplicati.

---

<div class="post-metadata">

### Author: ![MiG](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mig/32/119486_2.png) [@MiG](https://meta.discourse.org/u/MiG)
#### Post date: [19 Giugno 2022, 4:11am UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/3 "2022-06-19T04:11:08Z")

</div>

Sì, penso che sia corrotto. Mi piacerebbe se qualcuno potesse dirmi come risolverlo 🙂

Postgres è 13.6. Sto cercando di spostarlo su una nuova istanza su un server diverso.

Ho provato `rake search:reindex` all’interno del container Docker e fallisce con:

```plaintext
........rake aborted!
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "posts_search_pkey"
DETAIL: Key (post_id)=(86919) already exists.

```

È possibile semplicemente eliminare il record in questione e reindicizzare o qualcosa del genere?

Qualsiasi aiuto è apprezzato!

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [19 Giugno 2022, 7:31am UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/4 "2022-06-19T07:31:16Z")

</div>

Sì, consiglio di eliminare semplicemente la riga, è il modo più semplice per procedere

---

<div class="post-metadata">

### Author: ![MiG](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mig/32/119486_2.png) [@MiG](https://meta.discourse.org/u/MiG)
#### Post date: [19 Giugno 2022, 2:12pm UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/5 "2022-06-19T14:12:36Z")

</div>

Qualcuno può darmi alcuni comandi psql che posso usare per identificare e rimuovere le righe problematiche?

Grazie, è apprezzato!

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [20 Giugno 2022, 2:18pm UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/6 "2022-06-20T14:18:11Z")

</div>

Penso che sia qualcosa del tipo

```plaintext
./launcher enter app
su - postges
psql discourse
select id from post_search_data where post_id>86918 and post_id<86921;
--- quando ottieni l'id ----
delete from post_search_data where id=ID_DALL_ULTIMA_QUERY

```

Potrebbe esserci di più.

Forse qualcun altro può fornire ulteriore aiuto, ma questo è tutto ciò che penso di poter fare senza essere connesso al tuo server. Se hai bisogno di molto più aiuto, puoi pubblicare su #Marketplace o contattarmi direttamente.

O forse è sicuro semplicemente cancellarlo e farlo rigenerare, ma non ne sono del tutto sicuro.

---

<div class="post-metadata">

### Author: ![MiG](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mig/32/119486_2.png) [@MiG](https://meta.discourse.org/u/MiG)
#### Post date: [20 Giugno 2022, 6:15pm UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/7 "2022-06-20T18:15:32Z")

</div>

Grazie per l’aiuto, ragazzi.

Sono riuscito a fare quanto segue:

```plaintext
discourse=# reindex index concurrently "posts_search_pkey";
ERROR: could not create unique index "posts_search_pkey_ccnew2"
DETAIL: Key (post_id)=(116038) is duplicated.
discourse=# delete from post_search_data
where post_id = 116038;
DELETE 2
discourse=# delete from post_search_data
where post_id = 116038;
DELETE 0
discourse=# reindex index concurrently "posts_search_pkey";
ERROR: could not create unique index "posts_search_pkey_ccnew3"
DETAIL: Key (post_id)=(9336) is duplicated.
discourse=# delete from post_search_data
where post_id = 9336;
DELETE 1
.
.
.
.
discourse=# reindex index concurrently "posts_search_pkey";
REINDEX

```

Una volta che tutto sembrava a posto, ho eseguito un backup completo e l’ho ripristinato su un nuovo server senza problemi.

Apprezzo il tempo di tutti. Amo discourse!

Lezione imparata: controlla i backup di tanto in tanto per assicurarti che siano buoni 🙂 Mantengo backup giornalieri e poi anche “istantanee” mensili. Il backup più vecchio che avevo che non aveva un database corrotto aveva 4 mesi ☹

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [20 Giugno 2022, 8:30pm UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/8 "2022-06-20T20:30:31Z")

</div>

> [@MiG](#):
>
> Una volta che tutto sembrava a posto, ho eseguito un backup completo e l’ho ripristinato su un nuovo server senza problemi.

Fantastico! Sono così felice che tu ci sia riuscito!

> [@MiG](#):
>
> Il backup più vecchio che avevo che non avesse un database corrotto risaliva a 4 mesi fa

@sam Ciò che è preoccupante è che pensavo che la spiegazione fosse che si trattava di un problema con PG\<13, ma tu stai eseguendo PG13.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [20 Luglio 2022, 8:30pm UTC](https://meta.discourse.org/t/exception-psql-failed-detail-key-post-id-36946-is-duplicated/230356/9 "2022-07-20T20:30:35Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
