Skip to Content

Πώς να Διορθώσετε το Σφάλμα Διπλής Κλειδώματος στην Odoo (Οδηγός)

Μάθετε πώς να διορθώσετε το σφάλμα "ο διπλός κωδικός παραβιάζει την μοναδική περιοριστική συνθήκη" στο Odoo με σαφείς εξηγήσεις, κοινές αιτίες και βήμα-βήμα λύσεις για τους χρήστες και τους προγραμματιστές του Odoo.
4 Μαρτίου 2026 από
Elisa Van Outrive
| No comments yet

Εισαγωγή


Το σφάλμα “Η διπλή τιμή κλειδιού παραβιάζει τον μοναδικό περιορισμό” στο Odoo συμβαίνει όταν το σύστημα προσπαθεί να εισάγει ή να ενημερώσει μια εγγραφή που παραβιάζει έναν κανόνα μοναδικότητας της βάσης δεδομένων.

Αυτό είναι ένα σφάλμα περιορισμού σε επίπεδο βάσης δεδομένων που παράγεται από το PostgreSQL και εμφανίζεται συνήθως σε:

  • Καταγραφές διακομιστή
  • Αποτυχίες εισαγωγής
  • Απαντήσεις API
  • Αναβαθμίσεις μονάδας
  • Σενάρια μετανάστευσης δεδομένων

Το σφάλμα συνήθως φαίνεται ως εξής:

psycopg2.errors.UniqueViolation:
παραβίαση μοναδικού περιορισμού "res_partner_email_uniq"
ΛΕΠΤΟΜΕΡΕΙΕΣ: Κλειδί (email)=(john@example.com) υπάρχει ήδη.

Αυτός ο οδηγός εξηγεί γιατί συμβαίνει αυτό το σφάλμα και πώς να το διορθώσετε σωστά χωρίς να διακυβεύσετε την ακεραιότητα των δεδομένων.



Τι είναι ένας μοναδικός περιορισμός στο Odoo;


Ένας μοναδικός περιορισμός διασφαλίζει ότι ορισμένα πεδία δεν μπορούν να περιέχουν διπλές τιμές.

Στο Odoo, η μοναδικότητα μπορεί να επιβληθεί μέσω:

  • SQL περιορισμών
  • _sql_constraints σε ορισμούς μοντέλων
  • Μοναδικοί δείκτες σε επίπεδο βάσης δεδομένων

Παράδειγμα:

_sql_constraints = [
    ('email_unique', 'unique(email)', 'Το email πρέπει να είναι μοναδικό.')
]

Αυτό σημαίνει ότι κανένα δύο αρχεία δεν μπορούν να μοιράζονται την ίδια διεύθυνση email.

Εάν εισαχθεί ένα διπλότυπο, το PostgreSQL απορρίπτει τη λειτουργία.

Κοινές αιτίες σφαλμάτων περιορισμού διπλών κλειδιών



1. Δημιουργία ενός Αρχείου που Ήδη Υπάρχει

Εάν προσπαθήσετε να δημιουργήσετε:

  • Έναν συνεργάτη με υπάρχουσα διεύθυνση email
  • Ένα προϊόν με υπάρχουσα εσωτερική αναφορά
  • Έναν χρήστη με υπάρχοντα login

Το Odoo το μπλοκάρει.

2. API ή Ενσωμάτωσης Δημιουργία Διπλότυπων Αρχείων

Εξωτερικά συστήματα μπορεί να προσπαθήσουν να:

  • Αναδημιουργήσουν υπάρχοντες πελάτες
  • Να στείλουν ξανά την ίδια παραγγελία
  • Διπλές καταχωρήσεις προϊόντων

Χωρίς να ελέγχεται αν η καταχώρηση υπάρχει ήδη.

Αυτό είναι ένα κοινό πρόβλημα ενσωμάτωσης.

3. Εισαγωγή Διπλών Γραμμών

Οι εισαγωγές CSV που περιέχουν διπλές τιμές σε μοναδικά πεδία θα αποτύχουν.

Παράδειγμα:

Δύο γραμμές με το ίδιο email ή εξωτερική αναφορά.

4. Μετανάστευση Προσθήκης Νέου Μοναδικού Περιορισμού

Εάν μια αναβάθμιση module εισάγει έναν νέο μοναδικό περιορισμό και τα υπάρχοντα δεδομένα περιέχουν διπλές καταχωρήσεις, η μετανάστευση αποτυγχάνει.

5. Λανθασμένη Διαχείριση Εξωτερικών ID

Εάν οι ενσωματώσεις αγνοούν τα εξωτερικά ID και βασίζονται μόνο σε ακατέργαστες εισαγωγές, μπορεί να προκύψουν διπλές καταχωρήσεις.

Οι σωστές στρατηγικές χαρτογράφησης αποτρέπουν αυτό το πρόβλημα.

6. Χειροκίνητη Manipulation Βάσης Δεδομένων

Οι άμεσες εισαγωγές SQL μπορούν να παρακάμψουν την επικύρωση του ORM αλλά εξακολουθούν να ενεργοποιούν μοναδικούς περιορισμούς σε επίπεδο βάσης δεδομένων.



Πώς να διορθώσετε το σφάλμα περιορισμού διπλών κλειδιών στο Odoo



Βήμα 1 – Προσδιορίστε το Όνομα του Περιορισμού

Το μήνυμα σφάλματος προσδιορίζει τον περιορισμό:

η τιμή του διπλού κλειδιού παραβιάζει τον μοναδικό περιορισμό "res_partner_email_uniq"

Αυτό σας λέει ποιο πεδίο είναι διπλό.

Βήμα 2 – Εντοπίστε την Διπλή Εγγραφή

Αναζητήστε το μοντέλο για την διπλή τιμή.

Παράδειγμα:

Αναζητήστε το υπάρχον email στο res.partner.

Αποφασίστε αν θα:

  • Ενημερώσετε την υπάρχουσα εγγραφή
  • Συγχωνεύσετε τις διπλές εγγραφές
  • Αφαιρέσετε την λανθασμένη καταχώρηση

Βήμα 3 – Προσαρμογή Λογικής Ενσωμάτωσης

Εάν προκαλείται από την ενσωμάτωσή API:

  • Εφαρμόστε τη λογική "αναζήτηση πριν από τη δημιουργία"
  • Χρησιμοποιήστε την αναζήτηση για να βρείτε υπάρχοντα αρχεία
  • Ενημερώστε αντί να δημιουργήσετε διπλότυπα

Αυτό αποτρέπει τις επαναλαμβανόμενες αποτυχίες.

Βήμα 4 – Καθαρισμός Διπλών Δεδομένων Πριν από τη Μετανάστευση

Εάν η μετανάστευση αποτύχει λόγω διπλοτύπων:

  • Εντοπίστε τα διπλά αρχεία
  • Συγχωνεύστε ή διαγράψτε τις περιττές καταχωρίσεις
  • Στη συνέχεια, εκτελέστε ξανά τη μετανάστευση

Ποτέ μην αφαιρείτε τον περιορισμό χωρίς να καθαρίσετε τα δεδομένα.

Βήμα 5 – Χρησιμοποιήστε Εξωτερικά IDs για Συγχρονισμό Δεδομένων

Αντί να βασίζεστε σε εσωτερικά IDs βάσης δεδομένων:

  • Χρησιμοποιήστε εξωτερικά IDs
  • Διατηρήστε συνεπή αντιστοίχιση
  • Αποφύγετε τυφλές εισαγωγές

Δομημένες στρατηγικές συγχρονισμού μειώνουν σημαντικά τα σφάλματα διπλών κλειδιών.

Βήμα 6 – Αποφύγετε Άμεσες Εισαγωγές SQL

Χρησιμοποιείτε πάντα το Odoo ORM για τη δημιουργία εγγραφών.

Το ORM διαχειρίζεται την επικύρωση πιο ασφαλώς από τις χειροκίνητες λειτουργίες SQL.



Πώς να αποτρέψετε σφάλματα διπλών κλειδιών



  • Επικυρώστε τα δεδομένα πριν την εισαγωγή
  • Εφαρμόστε το μοτίβο “αναζήτηση πριν τη δημιουργία”
  • Χρησιμοποιήστε εξωτερικά IDs με συνέπεια
  • Καθαρίστε τα κληρονομημένα δεδομένα τακτικά
  • Παρακολουθήστε τα αρχεία καταγραφής ολοκλήρωσης
  • Αποφύγετε την παράκαμψη του ORM

Οι μοναδικοί περιορισμοί υπάρχουν για να προστατεύουν την ακεραιότητα των δεδομένων. Ο στόχος είναι να επιλυθούν οι διπλοί εγγραφές σωστά αντί να απενεργοποιηθούν οι περιορισμοί.



Πώς η Dasolo αποτρέπει την επανάληψη δεδομένων σε μεγάλη κλίμακα


Τα σφάλματα περιορισμού διπλών κλειδιών υποδεικνύουν συνήθως την έλλειψη προστατευτικών μέτρων στις ροές εργασίας δημιουργίας δεδομένων. Είτε προκληθούν από χειροκίνητη εισαγωγή, εισαγωγές ή ολοκληρώσεις API, αυτά τα ζητήματα συχνά αποκαλύπτουν την απουσία ιδεομονωτικής λογικής ή ανεπαρκούς επικύρωσης πριν από τη δημιουργία εγγραφών.


Στη Dasolo, ελαχιστοποιούμε τους κινδύνους διπλοποίησης εστιάζοντας σε:

  • Σαφείς στρατηγικές μοναδικών πεδίων
  • Λογική αναζήτησης πριν από τη δημιουργία στις ολοκληρώσεις
  • Ελεγχόμενη διαχείριση εξωτερικών ID
  • Δομημένη επικύρωση εισαγωγής
  • Συνεχής παρακολούθηση ροών συγχρονισμού

Μια πειθαρχημένη προσέγγιση διακυβέρνησης δεδομένων αποτρέπει την ανεξέλεγκτη διπλοποίηση και διατηρεί την ακεραιότητα της βάσης δεδομένων.



Συμπέρασμα


Το σφάλμα "Η τιμή διπλού κλειδιού παραβιάζει τον μοναδικό περιορισμό" του Odoo εμφανίζεται όταν μια ενέργεια προσπαθεί να δημιουργήσει ή να ενημερώσει μια εγγραφή με μια τιμή που πρέπει να παραμείνει μοναδική. Αν και η βάση δεδομένων μπλοκάρει την ενέργεια για να προστατεύσει την ακεραιότητα, η υποκείμενη αιτία συνδέεται συχνά με αδύνατη επικύρωση ή λογική συγχρονισμού.


Με την εφαρμογή προτύπων αναζήτησης πριν από τη δημιουργία, τον καθαρισμό κληρονομημένων διπλοτύπων και την επιβολή συνεπών στρατηγικών μοναδικότητας, οι προγραμματιστές μπορούν να αποτρέψουν επαναλαμβανόμενες παραβιάσεις περιορισμών. Η προστασία των μοναδικών πεδίων δεδομένων είναι απαραίτητη για τη διατήρηση αξιόπιστων και κλιμακούμενων περιβαλλόντων Odoo.




Elisa Van Outrive 4 Μαρτίου 2026
Share this post
Σύνδεση to leave a comment