sql >> Database >  >> RDS >> PostgreSQL

django.db.utils.IntegrityError:dubbele sleutelwaarde schendt unieke beperking spirit_category_category_pkey

Na veel debuggen heb ik eindelijk de oplossing gevonden. De reden is dat ik twee andere categories probeerde in te voegen met opgegeven id s, waardoor postgresql zou stoppen met het verhogen van de last_value van de relatieve sequence . Gewoon als volgt:

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

De manier om dit op te lossen is eenvoudig, ofwel verander de last_value handmatig in django , of geef de id gewoon niet op, d.w.z. verwijder de volgende regels:

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

Ik denk dat als je django de taak op zich neemt om id te beheren, , is het misschien geen goed idee om de id jezelf bij het invoeren van nieuwe gegevens.



  1. Back-up van mySQL-databases van localhost die op de Wamp-server draait

  2. Wat is de oorzaak van de ORA-38104-fout bij het samenvoegen van SQL?

  3. SQL Server-fout - HRESULT E_FAIL is geretourneerd door een aanroep naar een COM-onderdeel

  4. Hoe decimale waarden op te slaan in SQL Server?