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.