Skip to Content

Sådan løser du “duplicate key value violates unique constraint” i Odoo – komplet guide

Få en enkel guide til at løse fejlen "duplicate key value violates unique constraint" i Odoo. Her forklarer vi, hvorfor fejlen opstår, de mest almindelige årsager og konkrete trin — både for slutbrugere og udviklere — så du hurtigt kan identificere kilden og rette databasen uden at skabe nye problemer.
4. marts 2026 af
Elisa Van Outrive
| Ingen kommentarer endnu

Introduktion


Fejlmeddelelsen “Duplicate Key Value Violates Unique Constraint” i Odoo dukker op, når systemet prøver at oprette eller ændre en post med en værdi, som databasen allerede kræver skal være unik — og PostgreSQL derfor blokerer handlingen.

Det er en database-niveau fejl fra PostgreSQL og ses ofte i disse sammenhænge:

  • Serverlogs
  • Fejl ved import
  • API-svar
  • Opgraderinger af moduler
  • Datascripts til migration

Typisk ser fejlen sådan ud:

psycopg2.errors.UniqueViolation:
duplicate key value violates unique constraint "res_partner_email_uniq"
DETAIL: Key (email)=(john@example.com) already exists.

Denne guide viser, hvorfor fejlen opstår, og hvordan du løser den korrekt uden at gå på kompromis med dataintegriteten.



Hvad betyder en unik begrænsning i Odoo?


En unik begrænsning sikrer, at bestemte felter ikke kan indeholde gentagne værdier — altså at fx e-mailadresser eller produktnumre er entydige.

I Odoo håndhæves entydighed på flere måder:

  • SQL-constraints
  • _sql_constraints i modeldefinitioner
  • Unikke indeks på databaseniveau

Eksempel på en modelregel:

_sql_constraints = [
    ('email_unique', 'unique(email)', 'Email must be unique.')
]

Effekten er, at to poster ikke kan have samme e-mailadresse.

Hvis et duplicate indsættes, afviser PostgreSQL operationen.

Hyppige årsager til fejl om duplicate key constraint



1. Oprettelse af en post der allerede findes

Fejlen opstår hvis du forsøger at oprette:

  • En kontakt med en allerede registreret e-mail
  • Et produkt med et eksisterende internt referencefelt
  • En bruger med et allerede anvendt login

Odoo vil afvise oprettelsen.

2. API eller integration opretter dubletter

Eksterne systemer kan komme til at:

  • Oprette en eksisterende kunde igen
  • Sende samme ordre flere gange
  • Oprette gentagne produktposter

Fordelen mangler ofte: de tjekker ikke først om posten allerede findes.

Det er en meget almindelig integrationsfejl.

3. Import af dubletter fra CSV

CSV-importer med gentagne værdier i unikke felter fejler typisk.

Eksempel på en modelregel:

Fx to rækker med samme e-mail eller ekstern reference.

4. Migration der tilføjer en ny unik begrænsning

Hvis en opgradering indfører en ny unik regel og der allerede findes dubletter i data, vil migrationen fejle.

5. Forkert håndtering af eksterne ID’er

Hvis integrationer ignorerer eksterne id’er og kun indsætter rå data, kan dubletter opstå.

Korrekt mapping og brug af eksterne id’er forhindrer dette.

6. Manuel manipulation direkte i databasen

Direkte SQL-indsætninger kan omgå ORM-validering, men databasen håndhæver stadig sine unikke begrænsninger.



Sådan retter du fejlen i Odoo: duplicate key constraint



Trin 1 – Identificer constraint-navnet

Fejlbeskeden fortæller hvilken constraint der sprang:

duplicate key value violates unique constraint "res_partner_email_uniq"

Ud fra navnet kan du se hvilket felt der er registreret som unikt.

Trin 2 – Find den dublerede post

Søg i modellen efter den værdi, der forårsager fejlen.

Eksempel på en modelregel:

Søg fx efter e-mailen i res.partner.

Beslut hvad der skal ske med resultatet:

  • Opdatere den eksisterende post
  • Sammenflette dubletter
  • Fjerne fejlagtige poster

Trin 3 – Justér integrationslogikken

Hvis fejlen stammer fra en API-integration:

  • Implementér altid “søg før opret” mønsteret
  • Brug søgning til at finde eksisterende poster
  • Opdater i stedet for at oprette nye dubletter

Det mindsker gentagne fejl dramatisk.

Trin 4 – Ryd op i dubletter før migration

Hvis migrationen fejler på grund af dubletter:

  • Identificér de duplikerede poster
  • Sammenflet eller slet de overflødige rækker
  • Kør migrationen igen

Fjern aldrig en unik constraint blot for at få migrationen til at passere uden først at rydde op i data.

Trin 5 – Brug eksterne ID’er til synkronisering

I stedet for at stole på interne database-id’er:

  • Benyt eksterne id’er
  • Hold mappingen konsekvent
  • Undgå blinde indsætninger

Struktureret synkronisering reducerer markant risikoen for duplicate key-fejl.

Trin 6 – Undgå direkte SQL-indsætninger

Brug altid Odoos ORM til at oprette eller opdatere poster.

ORM’en håndterer validering og business-logic mere sikkert end rå SQL-indsæt.



Sådan forebygger du fejl med duplicate keys



  • Valider data inden indsættelse
  • Implementér patterns som “search-before-create”
  • Brug eksterne id’er konsekvent
  • Rens legacy-data løbende
  • Overvåg integrationslogs aktivt
  • Undgå at omgå ORM’en

Unikke begrænsninger er til for at beskytte dataintegriteten. Målet er at rette dubletter korrekt i stedet for at fjerne begrænsningen.



Hvordan Dasolo forhindrer datadublering i stor skala


Fejl om duplicate key constraint peger ofte på manglende sikre mekanismer i processen for oprettelse af data. Uanset om fejlen opstår ved manuel indtastning, import eller via API, afslører den typisk, at der mangler idempotens eller tilstrækkelig validering før oprettelse.


Hos Dasolo mindsker vi risikoen for dublering ved at fokusere på:

  • Tydelige regler for hvilke felter der skal være unikke
  • ’Search-before-create’ logik i integrationer
  • Kontrolleret håndtering af eksterne id’er
  • Validering under import
  • Løbende overvågning af synkroniseringsflows

En disciplineret datastyringsproces forhindrer ukontrolleret dublering og bevarer databasens konsistens.



Konklusion


Fejlmeddelelsen i Odoo opstår, når en handling forsøger at tilføje eller ændre en post med en værdi, som databasen kræver skal være unik. Databasen stopper handlingen for at beskytte integriteten, men rodårsagen er ofte svag validering eller ustabil synkroniseringslogik.


Ved at bruge ’search-before-create’, rydde op i gamle dubletter og have klare regler for entydighed kan udviklere minimere gentagne constraint-fejl. At beskytte unikke felter er afgørende for stabile og skalerbare Odoo-implementeringer.




Elisa Van Outrive 4. marts 2026
Del dette indlæg
Log ind for at skrive en kommentar