sql >> Database teknologi >  >> RDS >> PostgreSQL

django.db.utils.IntegrityError:duplikatnøgleværdi overtræder unik begrænsning spirit_category_category_pkey

Efter masser af fejlfinding fandt jeg endelig løsningen. Årsagen er, at jeg prøvede at indsætte to andre categories med angivet id s, hvilket ville få postgresql til at stoppe med at øge last_value af den relative sequence . Ganske som følger:

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"
    )

Måden at løse dette på er enkel, enten ændre last_value manuelt i django , eller bare undlad at angive id'et, dvs. fjern følgende linjer:

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

Jeg tror, ​​hvis du lader django påtage sig opgaven med at administrere id , er det måske ikke en god idé at angive id dig selv, når du indsætter nye data.



  1. MYSQL-OPDATERING med IN og Subquery

  2. Tjek, om en specifik mysql-forbindelse allerede eksisterer under et php-script?

  3. WHERE-sætning efter en UNION i SQL?

  4. SQL-forespørgsel for at indsætte datetime i SQL Server