#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.

Reply via email to