#32742: Running migrations when updating default_auto_field only updates primary
key.
-----------------------------------------+------------------------
Reporter: greemo | Owner: nobody
Type: Uncategorized | Status: new
Component: Migrations | Version: 3.2
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 |
-----------------------------------------+------------------------
I just added the AppConfig.default_auto_field setting to one of my apps
and created migrations. I have many to one relationships, and it seems
when I ran the makemigrations, it only updated the primary key side of the
migration.
I am running on a MySQL server, and it is not allowed to have foreign keys
with different INT size to primary keys, so the migration can not be
applied. This mismatch is allowed in postgres, but not recommended.
This is going to require some painful hand-creation of migrations where I
drop all foreign key constraints on foreign keys in one migration, then
recreate in another.
This seems like it could be done automatically by the django migration
system when it sees the int size of an auto-generated primary key is
increased, to then increase the size of the foreign key to match.
I have also tried changing it is settings via the following, which
produced the same results:
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
The code running this is juntagrico:
https://github.com/juntagrico/juntagrico
The migration produced is as follows:
{{{
# Generated by Django 3.2 on 2021-05-12 08:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('juntagrico', '0033_post_1_4'),
]
operations = [
migrations.AlterField(
model_name='activityarea',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='assignment',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='billable',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='billingperiod',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='delivery',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='deliveryitem',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='depot',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='job',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='jobextra',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='jobextratype',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='jobtype',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='listmessage',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='mailtemplate',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='member',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='specialroles',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='subscriptionmembership',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='subscriptionpart',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='subscriptionproduct',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='subscriptionsize',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='subscriptiontype',
name='id',
field=models.BigAutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID'),
),
]
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32742>
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 view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.c5f9a372eef8aa2061d15b013b79148f%40djangoproject.com.