#26624: Error when running sqlmigrate after dropping index (of index_together)
without actually migrating
----------------------------+------------------------------
Reporter: akki | Owner: <default>
Type: Bug | Status: new
Component: Migrations | Version: master
Severity: Normal | Keywords: sqlmigrate index
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------+------------------------------
I get an error when I run `sqlmigrate` for a migration which drops an
`index_together` constraint until actually migrating the previous
migration.
Steps to reproduce the bug:
1) Create app with the following models:
{{{
#!python
from django.db import models
class Brand(models.Model):
name = models.CharField(max_length=100, db_index=True)
value = models.IntegerField(blank=True, null=True, default=0)
class Meta:
index_together = (
('name', 'value'),
)
}}}
Run `python manage.py makemigrations`.
Then see the sql statements using `python manage.py sqlmigrate <app_name>
0001_initial`.
Everything works fine.
2) Remove the `index_together` part (and the whole `Meta` class).
Now run `python manage.py makemigrations`.
Then see the sql statements using `python manage.py sqlmigrate <app_name>
<migration_name>` and an error is thrown.
{{{
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "d:\git\django\django\core\management\__init__.py", line 367, in
execute_from_command_line
utility.execute()
File "d:\git\django\django\core\management\__init__.py", line 359, in
execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "d:\git\django\django\core\management\base.py", line 305, in
run_from_argv
self.execute(*args, **cmd_options)
File "d:\git\django\django\core\management\commands\sqlmigrate.py", line
33, in execute
return super(Command, self).execute(*args, **options)
File "d:\git\django\django\core\management\base.py", line 356, in
execute
output = self.handle(*args, **options)
File "d:\git\django\django\core\management\commands\sqlmigrate.py", line
62, in handle
sql_statements = executor.collect_sql(plan)
File "d:\git\django\django\db\migrations\executor.py", line 177, in
collect_sql
state = migration.apply(state, schema_editor, collect_sql=True)
File "d:\git\django\django\db\migrations\migration.py", line 129, in
apply
operation.database_forwards(self.app_label, schema_editor, old_state,
project_state)
File "d:\git\django\django\db\migrations\operations\models.py", line
557, in database_forwards
getattr(new_model._meta, self.option_name, set()),
File "d:\git\django\django\db\backends\base\schema.py", line 345, in
alter_index_together
self._delete_composed_index(model, fields, {'index': True},
self.sql_delete_index)
File "d:\git\django\django\db\backends\base\schema.py", line 358, in
_delete_composed_index
", ".join(columns),
ValueError: Found wrong number (0) of constraints for ert_brand(name,
value)
}}}
But the problem gets rectified if we migrate the first migration (i.e.
0001_initial in this case).
--
Ticket URL: <https://code.djangoproject.com/ticket/26624>
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/047.fc3b3f00675563892b33953eb01ffe40%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.