class Child(Parent):
pass
class MainModel(models.Model):
child = models.ForeignKey(Child, models.CASCADE)
}}}
- after state:
{{{
class Parent(models.Model):
id = models.BigAutoField(primary_key=True)
}}}
`makemigrations` generates a single operation:
{{{
migrations.AlterField(
model_name='parent',
name='id',
field=models.BigAutoField(primary_key=True, serialize=False),
),
}}}
which doesn't change `MainModel.child`'s datatype:
{{{
$ python manage.py sqlmigrate test_two 0002
--
-- Alter field id on parent
--
ALTER TABLE `test_two_child` DROP FOREIGN KEY
`test_two_child_parent_ptr_id_537e8ba7_fk_test_two_parent_id`;
ALTER TABLE `test_two_parent` MODIFY `id` bigint AUTO_INCREMENT NOT NULL;
ALTER TABLE `test_two_child` MODIFY `parent_ptr_id` bigint NOT NULL;
ALTER TABLE `test_two_child` ADD CONSTRAINT
`test_two_child_parent_ptr_id_537e8ba7_fk` FOREIGN KEY (`parent_ptr_id`)
REFERENCES `test_two_parent` (`id`);
}}}
and throws an error on MySQL:
{{{
MySQLdb._exceptions.OperationalError: (3780, "Referencing column
'child_id' and referenced column 'parent_ptr_id' in foreign key constraint
'test_two_mainmodel_child_id_3ca4683f_fk_test_two_' are incompatible.")
}}}
I couldn't find an existing ticket.
Noticed when checking #32742.
--
Ticket URL: <https://code.djangoproject.com/ticket/32743>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* stage: Unreviewed => Accepted
--
Ticket URL: <https://code.djangoproject.com/ticket/32743#comment:1>
* cc: David Wobrock (added)
* owner: nobody => David Wobrock
* has_patch: 0 => 1
* status: new => assigned
Comment:
PR: https://github.com/django/django/pull/14691
--
Ticket URL: <https://code.djangoproject.com/ticket/32743#comment:2>
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/32743#comment:3>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"325d7710ce9f6155bb55610ad6b4580d31263557" 325d7710]:
{{{
#!CommitTicketReference repository=""
revision="325d7710ce9f6155bb55610ad6b4580d31263557"
Fixed #32743 -- Added foreign key altering when altering type of
referenced primary key with MTI.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32743#comment:4>
Comment (by Keryn Knight):
There's an additional PR which been made which alludes to a situation
missed by the original fix: https://github.com/django/django/pull/14700
I can't speak for the veracity of it as I haven't been following the
details of the ticket, but it's probably worth someone glancing at it and
rolling it into this ticket's fix log if appropriate.
--
Ticket URL: <https://code.djangoproject.com/ticket/32743#comment:5>
Comment (by Mariusz Felisiak <felisiak.mariusz@…>):
In [changeset:"3d9040a50b160f8b4bb580e09f4120d4979fe29e" 3d9040a5]:
{{{
#!CommitTicketReference repository=""
revision="3d9040a50b160f8b4bb580e09f4120d4979fe29e"
Refs #32743 -- Fixed recreation of foreign key constraints when altering
type of referenced primary key with MTI.
Follow up to 325d7710ce9f6155bb55610ad6b4580d31263557.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32743#comment:6>