PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

django.db.utils.IntegrityError:zduplikowana wartość klucza narusza unikatowe ograniczenie spirit_category_category_pkey

Po wielu debugowaniach w końcu znalazłem rozwiązanie. Powodem jest to, że próbowałem wstawić dwie inne categories o określonym identyfikatorze s, co spowodowałoby, że postgresql przestałby zwiększać last_value względnej sequence . Tak jak poniżej:

0002_auto_20150728_0442.py

if not Category.objects.filter(pk=settings.ST_TOPIC_PRIVATE_CATEGORY_PK).exists():
    Category.objects.create(
        pk=settings.ST_TOPIC_PRIVATE_CATEGORY_PK,
        title="Private",
        slug="private",
        is_private=True
    )

if not Category.objects.filter(pk=settings.ST_UNCATEGORIZED_CATEGORY_PK).exists():
    Category.objects.create(
        pk=settings.ST_UNCATEGORIZED_CATEGORY_PK,
        title="Uncategorized",
        slug="uncategorized"
    )

Sposób na naprawienie tego jest prosty, albo zmień last_value ręcznie w django , lub po prostu nie podawaj id, tj. usuń następujące wiersze:

....
pk=settings.ST_TOPIC_PRIVATE_CATEGORY_PK,
....
pk=settings.ST_UNCATEGORIZED_CATEGORY_PK,
....

Myślę, że jeśli pozwolisz django podjąć się zadania zarządzania id , może nie być dobrym pomysłem określenie id siebie podczas wstawiania nowych danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać Metoda org.postgresql.jdbc.PgConnection.createBlob() nie jest jeszcze zaimplementowana

  2. Dodawanie indeksu do pola logicznego

  3. Jak Atan2d() działa w PostgreSQL

  4. Co oznacza błąd importu:nie znaleziono symbolu:_PQencryptPasswordConn i jak to naprawić?

  5. Pobieranie liczby określonych dni tygodnia (weekendu) z interwału w PostgreSQL