makemigrate adds multiple migrations.AddField for same model (django 1.7.1)

77 views
Skip to first unread message

pjotr

unread,
Dec 21, 2014, 2:36:29 PM12/21/14
to django...@googlegroups.com
Hi,

I have a django model that I just added six new fields to. I ran makemigrations and after that noticed when we ran our rehearsal upgrade with dump of the production database that things took longer than we expected, and checked the processlist. We saw that there were six alter table statements that was executed after each other, each taking around 15 minutes to run.

My expectations were that the migration framework would optimise this and only execute one alter table statement. But obviously it was not. Or is there a bug? :)

Are there anyway to fix this, without having to change the migration and perform the alter table statement with pure SQL?

DB: MySQL
Django 1.7.1

The migrations generated were six of these (only showing one to reduce post size):

migrations.AddField(
model_name='mymodel',
name='field_a',
field=models.BigIntegerField(help_text=b'Blablabla', null=True, db_index=True),
preserve_default=True,
),

Regards, Peter Lauri

pjotr

unread,
Dec 21, 2014, 6:27:06 PM12/21/14
to django...@googlegroups.com
Just realized the subject was wrong, it should be makemigrations , not makemigrate

Collin Anderson

unread,
Dec 22, 2014, 10:46:42 PM12/22/14
to django...@googlegroups.com
Hi,

You're just using one database?

Are all 6 ALTER statements identical?

Collin

pjotr

unread,
Dec 23, 2014, 6:04:55 AM12/23/14
to django...@googlegroups.com
Sorry, all the ALTER statements are identical except the FIELDNAME. It adds 6 new fields.

Collin Anderson

unread,
Dec 26, 2014, 3:54:52 PM12/26/14
to django...@googlegroups.com
Ohh, I see. Yes, this looks like a possible spot for optimization. I wouldn't really call it a "bug", but a "cleanup/optimization". You could probably open a ticket about it.

pjotr

unread,
Jan 22, 2015, 1:48:54 PM1/22/15
to django...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages