PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

django.db.utils.IntegrityError:giá trị khóa trùng lặp vi phạm ràng buộc duy nhất Spirit_category_category_pkey

Sau rất nhiều lần gỡ lỗi, cuối cùng tôi đã tìm ra giải pháp. Lý do là tôi đang cố chèn hai categories khác với id được chỉ định s, điều này sẽ khiến postgresql ngừng tăng last_value của sequence tương đối . Chỉ như sau:

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

Cách khắc phục sự cố này rất đơn giản, hãy thay đổi last_value theo cách thủ công trong django hoặc chỉ không chỉ định id, tức là xóa các dòng sau:

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

Tôi đoán nếu bạn để django đảm nhận nhiệm vụ quản lý id , có thể không nên chỉ định id khi chèn dữ liệu mới.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một kết xuất Postgresql có tạo ra các chuỗi bắt đầu bằng - hoặc sau - khóa cuối cùng không?

  2. Làm cách nào để thêm nguồn dữ liệu PostgreSQL vào WildFly 9.0?

  3. Sự cố khi biên dịch chương trình với pqxx

  4. Thiếu `pg_tblspc` sau khi cài đặt phiên bản OS X mới nhất (Yosemite hoặc El Capitan)

  5. Cách tạo uuids không có dấu gạch ngang