sql >> Databáze >  >> RDS >> PostgreSQL

django.db.utils.IntegrityError:duplicitní hodnota klíče porušuje jedinečné omezení spirit_category_category_pkey

Po spoustě ladění jsem konečně našel řešení. Důvodem je, že jsem se snažil vložit dvě další categories se zadaným id s, což by způsobilo, že postgresql přestal zvyšovat last_value relativní sequence . Přesně takto:

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

Způsob, jak to opravit, je jednoduchý, buď změňte last_value ručně v django , nebo prostě neuvádějte id, tj. odstraňte následující řádky:

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

Myslím, že pokud necháte django převzít úlohu správy id , nemusí být dobrý nápad zadat id při vkládání nových dat.



  1. Má Oracle OCI funkci OCIPasswordChange šifrovat přenášené heslo

  2. 3 způsoby, jak najít pozici podřetězce v řetězci v MySQL

  3. Nastavení hodnoty pro LIMIT při používání hromadného sběru

  4. Převeďte sloupec Datetime z UTC na místní čas v příkazu select