#26208: Squashing migrations in which unique=True is added and then removed for Charfield cannot migrate backwards on Postgres --------------------------+------------------------------------------------ Reporter: linuss | Owner: nobody Type: Bug | Status: new Component: | Version: 1.9 Migrations | Severity: Normal | Keywords: migrations squash charfield unique Triage Stage: | Has patch: 0 Unreviewed | Easy pickings: 0 | UI/UX: 0 --------------------------+------------------------------------------------ This bug can be reproduced as follows: * Create a model with a CharField with unique=True * Create a migration * Alter the model so that CharField is no longer unique * Create a new migration * Squash the two migrations * Migrate forwards, and then backwards
Error output: {{{ psycopg2.ProgrammingError: relation "survey_respondent_email_b0f1dc87_like" already exists The above exception was the direct cause of the following exception: Traceback (most recent call last): File "./manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line utility.execute() File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/core/management/__init__.py", line 345, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/core/management/base.py", line 348, in run_from_argv self.execute(*args, **cmd_options) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/core/management/base.py", line 399, in execute output = self.handle(*args, **options) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/core/management/commands/migrate.py", line 200, in handle executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/migrations/executor.py", line 96, in migrate self._migrate_all_backwards(plan, full_plan, fake=fake) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/migrations/executor.py", line 163, in _migrate_all_backwards self.unapply_migration(states[migration], migration, fake=fake) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/migrations/executor.py", line 218, in unapply_migration state = migration.unapply(state, schema_editor) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/migrations/migration.py", line 172, in unapply operation.database_backwards(self.app_label, schema_editor, from_state, to_state) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/migrations/operations/fields.py", line 206, in database_backwards self.database_forwards(app_label, schema_editor, from_state, to_state) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/migrations/operations/fields.py", line 201, in database_forwards schema_editor.alter_field(from_model, from_field, to_field) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/backends/base/schema.py", line 482, in alter_field old_db_params, new_db_params, strict) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/backends/postgresql/schema.py", line 116, in _alter_field self.execute(like_index_statement) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/backends/base/schema.py", line 110, in execute cursor.execute(sql, params) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/backends/utils.py", line 79, in execute return super(CursorDebugWrapper, self).execute(sql, params) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/utils.py", line 95, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/utils/six.py", line 685, in reraise raise value.with_traceback(tb) File "/var/lib/jenkins/shiningpanda/jobs/914dc536/virtualenvs/d41d8cd9/lib/python3.4 /site-packages/django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) django.db.utils.ProgrammingError: relation "survey_respondent_email_b0f1dc87_like" already exists }}} This issue was not present in version 1.9.0, but appeared in version 1.9.2 (or 1.9.1). Probably related to #26034 -- Ticket URL: <https://code.djangoproject.com/ticket/26208> 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 django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/049.1876d7884f0a49b849c0e4041540f1b4%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.