PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

django.db.utils.IntegrityError:nilai kunci duplikat melanggar batasan unik spirit_category_category_pkey

Setelah banyak debugging, saya akhirnya menemukan solusinya. Alasannya adalah saya mencoba memasukkan dua categories lainnya dengan id yang ditentukan s, yang akan menyebabkan postgresql berhenti meningkatkan last_value dari sequence relatif . Seperti berikut:

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

Cara mengatasinya sederhana, ubah last_value secara manual di django , atau jangan tentukan id, yaitu hapus baris berikut:

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

Saya kira jika Anda membiarkan Django melakukan tugas mengelola id , mungkin bukan ide yang baik untuk menentukan id sendiri saat memasukkan data baru.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengembalikan skema publik ke skema yang berbeda

  2. Cadangkan/Pulihkan database PostgreSQL yang di-docker

  3. Panduan Mempartisi Data Di PostgreSQL

  4. Jalankan skrip setelah titik masuk kontainer di docker-compose

  5. Benar-benar menyalin tabel postgres dengan SQL