Hi everyone,
I’ve encountered an issue that has left me scratching my head and I’m hoping someone here might be able to point me in the right direction.
After installing django-simple-history, I attempted to migrate my database and was met with the following error: IntegrityError: duplicate key value violates unique constraint "django_migrations_pkey" DETAIL: Key (id)=(11) already exists.
This situation is identical to the one described in this StackOverflow thread. Following the advice of the top-voted answer, I checked the last value from django_migrations_id_seq
and found it to be 51
.
However, once I dropped the tables created by the previous migrate command and ran migrate again, I found myself back in the same situation. The Key (id)=(11)
keeps incrementing with each attempt.
I’m afraid my understanding of both databases and Django falls short when it comes to diagnosing this issue. I would greatly appreciate any insights or suggestions on where to start digging deeper into this problem.
Thanks in advance for your help!
Update: New Solution Found
For those who have tried the following solutions without success:
ALTER SEQUENCE django_migrations_id_seq RESTART WITH {seq_num};
SELECT setval('django_migrations_id_seq', (SELECT MAX(id) FROM django_migrations))
python manage.py sqlsequencereset MyApp | python manage.py dbshell
I have found another solution on the internet that worked for me:
SELECT
setval(pg_get_serial_sequence('django_migrations', 'id'), max("id"))
FROM
"django_migrations";
When I tried select pg_get_serial_sequence('django_migrations','id')
, I got public.django_migrations_id_seq1
(Note the extra ‘1’ at the end) This explains the issue I was facing.
It’s wasn’t caused by installing django-simple-history. Instead, it occurred after using navicat to transfer from an old database to a new one, followed by python manage.py migrate
.
Thanks to everyone who visits this post, and I hope my findings can help others.