Closed escattone closed 7 months ago
After looking at the applied
dates in the production django_migrations
table -- many of which pre-date the Postgres migration so must have come from the original MySQL table -- my current theory is that something like the following must have happened:
django_migrations
table was created and populated in the fresh Postgres instance, as expected, when I ran the ./manage.py migrate --database postgres
command prior to migrating the actual MySQL data.django_migrations
table was included in the data migration, and because of that, the rows from the MySQL django_migrations
table overwrote many of the rows in the Postgres django_migrations
table, and since it wasn't intended to be included in the data migration, its sequence would not have been reset, which explains the bad sequence.This has been resolved in production.
I ssh'ed (kubectl exec ...
) into a web pod, deleted all of the rows in the django_migrations
table, reset its sequence, and reloaded it to reflect the already applied migrations:
psql
and did the following:
sumo_prod=> delete from django_migrations;
sumo_prod=> BEGIN;
SELECT setval(pg_get_serial_sequence('"django_migrations"','id'), coalesce(max("id"), 1), max("id") IS NOT null) FROM "django_migrations";
COMMIT;
./manage.py migrate --fake
to rebuild a fresh django_migrations
table.And then I re-ran the failed deploy step of the release, which completed successfully. 🎉
I just checked my make_pgloader_script.py
, and I didn't explicitly migrate the django_migrations
table, as I wouldn't have expected that I did. However, I still suspect that pgloader
must have migrated the django_migrations
table somehow, because it's the only way I can imagine the django_migrations
table containing rows with applied
dates that pre-dated the actual Postgres migration date, some by many years.
Error when migrating the production database
The following error occurred during the DB migration step of a production deployment on Jan. 31, 2024 at 9:42am PST.
https://mozilla.sentry.io/share/issue/4961dd9745f5493583bbf72a868d6500/
Proximate Cause
The
django_migrations
table in production is corrupted:Its
id
sequence --django_migrations_id_seq
-- is corrupted:Comparison between stage and prod
Clean
django_migrations
table on stageCorrupted
django_migrations
table on prod