# Criando novo usuário erro após upgrade PG::UniqueViolation Chave duplicada

**URL:** <https://meta.discourse.org/t/creating-new-user-error-after-upgrade-pg-uniqueviolation-duplicate-key/252629>\
**Category:** SSO\
**Tags:** rest-api\
**Created:** [23 Janeiro , 2023 15:30 UTC](https://meta.discourse.org/t/creating-new-user-error-after-upgrade-pg-uniqueviolation-duplicate-key/252629 "2023-01-23T15:30:20Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![bobpies](https://avatars.discourse-cdn.com/v4/letter/b/3ec8ea/32.png) [@bobpies](https://meta.discourse.org/u/bobpies)\
**Post date:** [24 Janeiro , 2023 12:21 UTC](https://meta.discourse.org/t/creating-new-user-error-after-upgrade-pg-uniqueviolation-duplicate-key/252629/2 "2023-01-24T12:21:43Z")

</div>

Postando a solução aqui para quem mais encontrar um problema semelhante

Atualizei nossos fóruns de v1.6 para 3.1 usando backup e restauração em um novo servidor  
Desde a atualização, novas inscrições de usuários pararam de funcionar via discourse\_api e SSO  
o erro foi um  
**PG::UniqueViolation: ERROR: duplicate key value violates unique constraint “user\_emails\_pkey”**  
**DETAIL: Key (id)=(xx) already exists.**  
após alguma investigação, acessei o droplet e o postgres - especificamente a tabela “ **user\_emails** ”

```plaintext
                                          Table "public.user_emails"
      Column | Type | Collation | Nullable | Default                 
------------------+-----------------------------+-----------+----------+-----------------------------------------
 id | integer | | not null | nextval('user_emails_id_seq'::regclass)
 user_id | integer | | not null | 
 email | character varying(513) | | not null | 
 primary | boolean | | not null | false
 created_at | timestamp without time zone | | not null | 
 updated_at | timestamp without time zone | | not null | 
 normalized_email | character varying | | | 
Indexes:
    "user_emails_pkey" PRIMARY KEY, btree (id)
    "index_user_emails_on_email" UNIQUE, btree (lower(email::text))
    "index_user_emails_on_normalized_email" btree (lower(normalized_email::text))
    "index_user_emails_on_user_id" btree (user_id)
    "index_user_emails_on_user_id_and_primary" UNIQUE, btree (user_id, "primary") WHERE "primary"

```

A coluna id tem um “user\_emails\_id\_seq” para selecionar o próximo ID disponível a ser usado ao inserir um novo usuário  
Executei **SELECT MAX(id) FROM user\_emails;** que retornou 237023  
e então **SELECT nextval(‘user\_emails\_id\_seq’);** que retornou 23  
então a tabela estava fora de sequência.  
Para corrigir  
**SELECT setval(‘user\_emails\_id\_seq’, (SELECT MAX(id) FROM user\_emails)+1);**

---

_[View the full topic](https://meta.discourse.org/t/creating-new-user-error-after-upgrade-pg-uniqueviolation-duplicate-key/252629)._
