summaryrefslogtreecommitdiff
path: root/django/db/backends/postgresql/schema.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/db/backends/postgresql/schema.py')
-rw-r--r--django/db/backends/postgresql/schema.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/django/db/backends/postgresql/schema.py b/django/db/backends/postgresql/schema.py
index f6be40f846..8d4db4ea1c 100644
--- a/django/db/backends/postgresql/schema.py
+++ b/django/db/backends/postgresql/schema.py
@@ -104,6 +104,15 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
def _alter_field(self, model, old_field, new_field, old_type, new_type,
old_db_params, new_db_params, strict=False):
+ # Drop indexes on varchar/text columns that are changing to a different
+ # type.
+ if (old_field.db_index or old_field.unique) and (
+ (old_type.startswith('varchar') and not new_type.startswith('varchar')) or
+ (old_type.startswith('text') and not new_type.startswith('text'))
+ ):
+ index_name = self._create_index_name(model, [old_field.column], suffix='_like')
+ self.execute(self._delete_constraint_sql(self.sql_delete_index, model, index_name))
+
super()._alter_field(
model, old_field, new_field, old_type, new_type, old_db_params,
new_db_params, strict,