Siirry sisältöön

Kuinka Korjata Odoon Kaksoisavainarvo, Joka Rikkoo Yksilöllistä Rajoitetta

Opi korjaamaan Odoo:n kaksoiskohdearvo, joka rikkoo ainutlaatuista rajoitetta Odoo:ssa selkeillä selityksillä, yleisillä syillä ja vaiheittaisilla ratkaisuilla Odoo-käyttäjille ja -kehittäjille.
4. maaliskuuta 2026 kirjoittanut
Elisa Van Outrive
| Ei vielä kommentteja

Johdanto


Odoo "Kaksoiskohteen arvo rikkoo ainutlaatuista rajoitetta" -virhe ilmenee, kun järjestelmä yrittää lisätä tai päivittää tietuetta, joka rikkoo tietokannan ainutlaatuisuus sääntöä.

Tämä on tietokantatasoinen rajoitevirhe, jonka PostgreSQL tuottaa ja joka ilmenee tyypillisesti:

  • Palvelinlokit
  • Tuontivirheet
  • API-vastaukset
  • Moduulin päivitykset
  • Tietojen siirtoskriptit

Virhe näyttää yleensä tältä:

psycopg2.errors.UniqueViolation:
duplikaattiavainarvo rikkoo ainutlaatuista rajoitetta "res_partner_email_uniq"
YKSITYISKOHTA: Avain (sähköposti)=(john@example.com) on jo olemassa.

Tässä oppaassa selitetään, miksi tämä virhe tapahtuu ja kuinka se voidaan korjata oikein ilman, että tietojen eheys vaarantuu.



Mikä on ainutlaatuinen rajoite Odoossa?


Ainutlaatuinen rajoite varmistaa, että tietyt kentät eivät voi sisältää duplikaattiarvoja.

Odoossa ainutlaatuisuus voidaan varmistaa:

  • SQL-rajoitteilla
  • _sql_constraints-mallin määrittelyissä
  • Tietokannan tason ainutlaatuisilla indekseillä

Esimerkki:

_sql_constraints = [
    ('email_unique', 'unique(email)', 'Sähköpostin on oltava ainutlaatuinen.')
]

Tämä tarkoittaa, että mikään kaksi tietuetta eivät voi jakaa samaa sähköpostiosoitetta.

Jos kaksoiskappale lisätään, PostgreSQL hylkää operaation.

Yleisimmät syyt kaksoiskohteen rajoitevirheille



1. Tietueen luominen, joka jo olemassa

Jos yrität luoda:

  • Kumppanin, jolla on olemassa oleva sähköpostiosoite
  • Tuotteen, jolla on olemassa oleva sisäinen viite
  • Käyttäjän, jolla on olemassa oleva kirjautuminen

Odoo estää sen.

2. API tai integraatio, joka luo kaksoistietueita

Ulkoiset järjestelmät saattavat yrittää:

  • Uudelleenluoda olemassa olevia asiakkaita
  • Uudelleenlähettää sama tilaus
  • Kaksoistuotteiden merkinnät

Ilman tarkistusta, onko tietue jo olemassa.

Tämä on yleinen integraatio-ongelma.

3. Kaksoisrivien tuonti

CSV-tuonnit, jotka sisältävät kaksoisarvoja ainutlaatuisissa kentissä, epäonnistuvat.

Esimerkki:

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

4. Siirto uuden ainutlaatuisen rajoitteen lisääminen

Jos moduulin päivitys tuo mukanaan uuden ainutlaatuisen rajoitteen ja olemassa olevat tiedot sisältävät kaksoiskappaleita, siirto epäonnistuu.

5. Virheellinen ulkoinen ID-käsittely

Jos integraatiot jättävät huomiotta ulkoiset ID:t ja luottavat vain raakatuontiin, kaksoiskappaleita voi syntyä.

Oikeat kartoitusstrategiat estävät tämän ongelman.

6. Manuaalinen tietokannan manipulointi

Suorat SQL-insertit voivat ohittaa ORM-validoinnin, mutta ne voivat silti laukaista ainutlaatuiset rajoitteet tietokannan tasolla.



Kuinka korjata Odoo kaksoiskohteen rajoitevirhe



Vaihe 1 – Tunnista rajoitteen nimi

Virheilmoitus määrittelee rajoitteen:

kopioi avainarvo rikkoo ainutlaatuista rajoitetta "res_partner_email_uniq"

Tämä kertoo, mikä kenttä on kaksoiskappale.

Vaihe 2 – Etsi kaksoiskappaleen tietue

Etsi mallista kaksoiskappaleen arvo.

Esimerkki:

Etsi olemassa olevaa sähköpostia res.partnerista.

Päätä, haluatko:

  • Päivittää olemassa olevaa tietuetta
  • Yhdistää kaksoiskappaleet
  • Poistaa virheellinen merkintä

Vaihe 3 – Säädä integraatiologikkaa

Jos syynä on API-integraatio:

  • Ota käyttöön "haku ennen luomista" -logiikka
  • Käytä hakua löytääksesi olemassa olevat tiedot
  • Päivitä sen sijaan, että luot kopioita

Tämä estää toistuvat epäonnistumiset.

Vaihe 4 – Siivoa kaksoiskappaleet ennen migraatiota

Jos migraatio epäonnistuu kaksoiskappaleiden vuoksi:

  • Tunnista kaksoiskappaleet
  • Yhdistä tai poista tarpeettomat tiedot
  • Suorita sitten migraatio uudelleen

Älä koskaan poista rajoitetta ilman, että tiedot on siivottu.

Vaihe 5 – Käytä ulkoisia tunnuksia tietojen synkronointiin

Älä luota sisäisiin tietokantatunnuksiin:

  • Käytä ulkoisia tunnuksia
  • Ylläpidä johdonmukaista kartoitusta
  • Vältä sokeita lisäyksiä

Rakenteelliset synkronointistrategiat vähentävät merkittävästi kaksoisavainten virheitä.

Vaihe 6 – Vältä suoria SQL-lisäyksiä

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

ORM käsittelee validointia turvallisemmin kuin manuaaliset SQL-toiminnot.



Kuinka estää kaksoiskohdevirheitä



  • Vahvista tiedot ennen lisäystä
  • Toteuta "etsi-ennen-luo" -malli
  • Käytä ulkoisia tunnuksia johdonmukaisesti
  • Puhdista perintödata säännöllisesti
  • Seuraa integraatiolokeja
  • Vältä ORM: n ohittamista

Ainutlaatuiset rajoitteet ovat olemassa suojaamaan datan eheyttä. Tavoitteena on ratkaista kaksoiskappaleet oikein sen sijaan, että rajoitteita poistettaisiin.



Kuinka Dasolo estää tietojen kaksoiskappaleet suuressa mittakaavassa


Kaksoisavaimen rajoitevirheet osoittavat tyypillisesti puuttuvia turvatoimia datan luontiprosesseissa. Olipa kyse manuaalisesta syötöstä, tuonnista tai API-integraatioista, nämä ongelmat paljastavat usein idempotenttilogiikan puutteen tai riittämättömän validoinnin ennen tietueen luontia.


Dasololla minimoimme kaksoiskappaleiden riskejä keskittymällä:

  • Selkeät ainutlaatuiset kenttästrategiat
  • Haku-ennen-luonti -logiikka integraatioissa
  • Hallittu ulkoinen ID-hallinta
  • Rakenteellinen tuontivalidointi
  • Jatkuva synkronointivirtojen seuranta

Kurinalainen datan hallintaprosessi estää hallitsemattoman kaksoiskappaleiden syntymisen ja säilyttää tietokannan johdonmukaisuuden.



Yhteenveto


Odoo "Kaksinkertainen avainarvo rikkoo ainutlaatuisuuden rajoitteen" -virhe ilmenee, kun toiminto yrittää luoda tai päivittää tietuetta arvolla, jonka on pysyttävä ainutlaatuisena. Vaikka tietokanta estää toiminnan suojellakseen eheyttä, taustasyy liittyy usein heikkoon validointiin tai synkronointilogiikkaan.


Olemalla toteuttamatta hakua ennen luomista -malleja, puhdistamalla perintöduplikaatteja ja valvomalla johdonmukaisia ainutlaatuisuusstrategioita, kehittäjät voivat estää toistuvia rajoitusrikkomuksia. Ainutlaatuisten tietokenttien suojaaminen on olennaista luotettavien ja skaalautuvien Odoo-ympäristöjen ylläpitämiseksi.




Elisa Van Outrive 4. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin