sql >> Databasteknik >  >> RDS >> PostgreSQL

django.db.utils.IntegrityError:duplicerat nyckelvärde bryter mot den unika begränsningen spirit_category_category_pkey

Efter mycket felsökning hittade jag äntligen lösningen. Anledningen är att jag försökte infoga två andra categories med angivet id s, vilket skulle få postgresql att sluta öka last_value av den relativa sequence . Precis som följer:

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

Sättet att fixa detta är enkelt, antingen ändra last_value manuellt i django , eller helt enkelt inte ange id, d.v.s. ta bort följande rader:

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

Jag antar att om du låter django ta på sig uppgiften att hantera id , det kanske inte är en bra idé att ange id dig själv när du infogar ny data.



  1. Hur man sparar resultatet av MySql-frågan i variabel med hjälp av node-mysql

  2. Oracle 11g - Kontrollera begränsningen med RegEx

  3. Läser en databas från tillgångsmappen

  4. MySQL InnoDB låser endast de berörda raderna?