#25752: RenameField on m2m causes error when new m2m field is added with old
name
-----------------------------+---------------------------------------------
Reporter: skyjur | Owner: nobody
Type: | Status: new
Uncategorized |
Component: Migrations | Version: 1.8
Severity: Normal | Keywords: postgres migrations renamefield
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-----------------------------+---------------------------------------------
When in migrations I do RenameField on ManyToMany field, and then do
AddField with ManyToMany with same name but different model, I get
Integrity Error referring to existing index.
It seems the problem is that RenameField does not rename database indexes,
and then when new m2m field is being added it tries to create index with
same name and so I get database error:
{{{
...
File "django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "django/db/utils.py", line 97, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "cms_test_many_2e06cda4"
already exists
}}}
Here is how migration which creates this error looks like:
{{{
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.RenameField(
'test',
'many',
'many_legacy',
),
migrations.AddField(
model_name='test',
name='many',
field=models.ManyToManyField(to='cms.NewRel2'),
),
]
}}}
Initially I noticed this error on 1.7, then I also managed to replicate it
on 1.8
Error happened on postgres database.
--
Ticket URL: <https://code.djangoproject.com/ticket/25752>
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/049.87ad02dc1ea501a85d168fec18c0842a%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.