Opened 5 years ago

Closed 5 years ago

#25621 closed Bug (needsinfo)

AlterField to ForeignKey reverse migration doesn't drop the constraint

Reported by: Marius Gedminas Owned by: nobody
Component: Migrations Version: 1.8
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I'm changing a data model that had a

source_id = CharField()

field to a

source_resolution = ForeignKey(CommitteeResolution, db_column='source_id', to_field='source_id')

so that my database schema remains the same, but now the column is a foreign key reference to another table.

I've adjusted the migrations file manually to avoid dropping/re-creating columns. The migration looks like this now:

    operations = [
        migrations.AlterField(
            model_name='suggestion',
            name='source_id',
            field=models.ForeignKey(db_column=b'source_id', to_field=b'source_id', to='mps_v2.CommitteeResolution'),
            preserve_default=False,
        ),
        migrations.RenameField(
            model_name='suggestion',
            old_name='source_id',
            new_name='source_resolution',
        ),
        migrations.AlterUniqueTogether(
            name='suggestion',
            unique_together=set([('source_resolution', 'source_index')]),
        ),
    ]

The forward migration is exactly as I expect it to be:

$ django-admin sqlmigrate mps_v2 0029
BEGIN;
ALTER TABLE `mps_v2_suggestion` ADD CONSTRAINT `D58bb2cf0b1407c8c24fa06b0cc34f38` FOREIGN KEY (`source_id`) REFERENCES `mps_v2_committeeresolution` (`source_id`);

COMMIT;

I expect the reverse migration to drop the constraint.

It doesn't:

$ django-admin sqlmigrate mps_v2 0029 --backwards

(there's no output).

Change History (3)

comment:1 Changed 5 years ago by Tim Graham

What database are you using? Could you provide a complete minimal project that reproduces it?

comment:2 Changed 5 years ago by Marius Gedminas

MySQL (unfortunately).

The actual project where I stumbled upon this is open source: https://github.com/ManoSeimas/manoseimas.lt/blob/master/manoseimas/mps_v2/migrations/0029_link_suggestion_to_committeeresolution.py

I'll try to provide a minimal example.

comment:3 Changed 5 years ago by Tim Graham

Resolution: needsinfo
Status: newclosed
Note: See TracTickets for help on using tickets.
Back to Top