Siirry sisältöön

Odoo: Korjaa “Duplicate Key Value Violates Unique Constraint” – Täydellinen Opas

Opi ratkaisemaan Odoo-ympäristössä esiintyvä "duplicate key value violates unique constraint" -virhe helposti ja käytännöllisesti. Tässä selkeät syyt, tyypillisimmät tilanteet joissa virhe syntyy sekä vaiheittaiset korjausohjeet sekä Odoon käyttäjille että kehittäjille.
4. maaliskuuta 2026 kirjoittanut
Odoo: Korjaa “Duplicate Key Value Violates Unique Constraint” – Täydellinen Opas
Elisa Van Outrive
| Ei vielä kommentteja

Johdanto


Odoossa nähtävä "Duplicate Key Value Violates Unique Constraint" -virhe syntyy, kun järjestelmä yrittää lisätä tai päivittää tietuetta, joka rikkoo tietokannan yksilöllisyysmääräystä.

Tämä on tietokantakerroksen virheilmoitus, jonka takana on PostgreSQL, ja se ilmestyy esimerkiksi seuraavissa tilanteissa:

  • Palvelimen lokit
  • Tuontivirheet
  • API-vastaukset
  • Moduulipäivitykset
  • Datan migraatio-skriptit

Virheilmoitus esiintyy yleensä muodossa:

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

Tässä oppaassa käydään läpi, miksi virhe syntyy ja miten se korjataan oikein ilman että tietokannan eheys vaarantuu.



Mikä on uniikki-ehto Odoossa?


Uniikki-ehto takaa, ettei tietty kenttä voi sisältää samoja arvoja useammassa rivissä.

Odoossa yksilöllisyyttä voidaan valvoa useilla tavoilla:

  • SQL-rajoitteet
  • Mallin _sql_constraints-määrittelyt
  • Tietokantatasoiset uniikki-indeksit

Esimerkki:

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

Tämä tarkoittaa, ettei kahta asiakas- tai käyttäjätietuetta voi olla samalla sähköpostiosoitteella.

Jos päällekkäinen arvo yritetään lisätä, PostgreSQL hylkää operaation.

Yleisimmät syyt "duplicate key" -virheille



1. Rekordin luominen, joka on jo olemassa

Virhe voi syntyä jos yritetään luoda:

  • Yhteystieto, jonka sähköposti on jo rekisterissä
  • Tuote, jolla on sama sisäinen viite kuin toisella tuotteella
  • Käyttäjä, jolla on jo käytössä oleva login

Odoo estää tällaiset luontiyritykset.

2. API tai integraatio luo päällekkäisiä tietueita

Ulkoiset järjestelmät saattavat yrittää:

  • Luo uudelleen jo olemassa olevia asiakkaita
  • Lähettää saman tilauksen uudestaan
  • Lisätä saman tuotteen montaa kertaa

Ilman että ne tarkistavat, löytyykö vastaava tietue jo järjestelmästä.

Tämä on tyypillinen integraatiovirhe.

3. Duplikaattirivien tuonti

CSV-tuonnit, joissa uniikki-kentissä on kaksoiskappaleita, epäonnistuvat.

Esimerkki:

Esimerkiksi kaksi riviä, joilla on sama sähköposti tai sama ulkoinen viite.

4. Migraatio, jossa otetaan käyttöön uusi uniikki-ehto

Jos päivitys lisää uuden uniikki-rajoitteen ja vanhassa datassa on päällekkäisyyksiä, migraatio epäonnistuu.

5. Väärin käsitellyt external ID:t

Jos integraatiot ohittavat external ID -kentät ja tekevät raakalisäyksiä, duplikaatit voivat syntyä.

Oikea mappaus estää tämän ongelman.

6. Manuaalinen tietokantamuokkaus

Suorat SQL-insertit voivat kiertää ORM-tarkistuksia, mutta tietokanta silti estää uniikkeusehdon.



Miten korjata Odoon duplicate key -virhe



Vaihe 1 – Selvitä rajoitteen nimi

Virheilmoitus kertoo yleensä rajoitteen nimen:

duplicate key value violates unique constraint "res_partner_email_uniq"

Nimestä pystyt päättelemään, mikä kenttä on konfliktissa.

Vaihe 2 – Etsi päällekkäinen tietue

Hae mallista kyseinen arvo läpi.

Esimerkki:

Esimerkiksi etsi sähköpostiosoite res.partner-mallista.

Päätä sen jälkeen miten edetä:

  • Päivitä olemassa oleva tietue
  • Yhdistä päällekkäiset rivit
  • Poista virheellinen merkintä

Vaihe 3 – Säädä integraatiologikkaa

Jos API aiheuttaa virheen:

  • Toteuta "etsi ennen luomista" -logiikka
  • Käytä hakuja olemassa olevien tietueiden löytämiseen
  • Päivitä tietue sen sijaan, että luot uuden duplikaatin

Tämä estää saman virheen toistumisen.

Vaihe 4 – Siivoa duplikaatit ennen migraatiota

Jos migraatio kaatuu duplikaattien vuoksi:

  • Tunnista päällekkäiset tietueet
  • Yhdistä tai poista tarpeettomat rivit
  • Suorita migraatio uudelleen sen jälkeen

Älä poista uniikki-rajoitetta ennen datan siistimistä.

Vaihe 5 – Käytä external ID:itä synkronoinnissa

Sisäisten tietokanta-ID:iden sijaan:

  • Hyödynnä external ID -kenttiä
  • Pidä mappaukset johdonmukaisina
  • Vältä sokeita lisäyksiä

Rakenteelliset synkronointistrategiat pienentävät merkittävästi duplicate key -virheiden riskiä.

Vaihe 6 – Vältä suoravetoisia SQL-inserttejä

Käytä aina Odoon ORM:ää tietueiden luomiseen.

ORM hoitaa validoinnit turvallisemmin kuin käsin kirjoitetut SQL-komennot.



Miten estää duplicate key -virheitä



  • Varmista datan oikeellisuus ennen lisäystä
  • Ota käyttöön "etsi-ennen-luomista" -malli
  • Käytä external ID -käytäntöä johdonmukaisesti
  • Siivoa vanha data säännöllisesti
  • Seuraa integraatioiden lokeja
  • Älä kierrä ORM:ää tarpeettomasti

Uniikki-rajoitteet ovat siellä suojellakseen tiedon eheyttä. Tavoitteena on korjata päällekkäisyydet oikein, ei poistaa rajoitteita ongelman oikaisemiseksi.



Miten Dasolo estää datan päällekkäisyyttä suuressa mittakaavassa


Duplicate key -virheet paljastavat usein puutteita tietojen luontiprosesseissa. Riippumatta siitä, aiheuttivatko ne manuaaliset syötöt, tuonnit vai API-integraatiot, taustalla on yleensä puuttuva idempotenssi tai riittämätön validointi ennen uuden tietueen luontia.


Dasololla vähennämme päällekkäisyyden riskiä keskittymällä muun muassa:

  • Selkeisiin uniikki-kenttäkäytäntöihin
  • "Etsi-ennen-luomista" -logiikkaan integraatioissa
  • Hallittuun external ID -käytäntöön
  • Rakenteelliseen tuontivalidointiin
  • Jatkuvaan synkronoinnin valvontaan

Kurinalainen datanhallinta estää hallitsemattoman duplikaation ja säilyttää tietokannan eheän tilan.



Yhteenveto


Odoo-virheilmoitus "Duplicate Key Value Violates Unique Constraint" kertoo, että yritetään tallentaa arvoa, jonka tulee olla yksilöllinen. Vaikka tietokanta estää toiminnon, syy on usein heikossa validoinnissa tai epätasapainoisissa synkronointiprosesseissa.


Jos otat käyttöön "etsi-ennen-luomista" -mallit, poistat vanhoja duplikaatteja ja noudatat johdonmukaisia uniikki-strategioita, voit estää toistuvat rikkoontumiset. Yksilöllisten kenttien suojaaminen on välttämätöntä luotettavan ja laajennettavan Odoo-ympäristön ylläpidossa.




Odoo: Korjaa “Duplicate Key Value Violates Unique Constraint” – Täydellinen Opas
Elisa Van Outrive 4. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin