#24264: foreign key constraint error migrating integer pk to CharField
--------------------------------------+---------------------------
Reporter: timgraham | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: 1.8alpha1
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
--------------------------------------+---------------------------
Discovered while trying to update djangoproject.com to 1.8a1. See
https://github.com/django/djangoproject.com/pull/373 for steps to
reproduce.
{{{
$ python manage.py test fundraising
...
foreign key constraint
"fundrais_donor_id_50d7dcbcff28bd90_fk_fundraising_djangohero_id" cannot
be implemented
DETAIL: Key columns "donor_id" and "id" are of incompatible types:
integer and character varying.
}}}
Bisected to bbbed99f6260a8b3e65cb990e49721b1ce4a441b
Here's a test for `tests/schema/tests.py` which is at least a start (it
fails on 1.7.x too, so it's probably not quite right):
{{{
def test_change_int_pk_to_char(self):
with connection.schema_editor() as editor:
editor.create_model(Author)
editor.create_model(Book)
new_field = CharField(max_length=15, primary_key=True)
new_field.set_attributes_from_name("id")
new_field.model = Author
with connection.schema_editor() as editor:
editor.alter_field(Author, Author._meta.get_field("id"),
new_field)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24264>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/052.17086cb0a2b9ca90ad8931ee46ba6915%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.