Fixed #33899 -- Fixed migration crash when removing indexed field on SQLite 3.35.5+.
Regression in 702819227fd0cdd9b581cd99e11d1561d51cbeb. Thanks cessor for the report.
This commit is contained in:
parent
fd93db97c7
commit
c0beff2123
1
AUTHORS
1
AUTHORS
|
@ -322,6 +322,7 @@ answer newbie questions, and generally made Django that much better:
|
|||
Filip Noetzel <http://filip.noetzel.co.uk/>
|
||||
Filip Wasilewski <filip.wasilewski@gmail.com>
|
||||
Finn Gruwier Larsen <finn@gruwier.dk>
|
||||
Fiza Ashraf <fizaashraf37@gmail.com>
|
||||
Flávio Juvenal da Silva Junior <flavio@vinta.com.br>
|
||||
flavio.curella@gmail.com
|
||||
Florian Apolloner <florian@apolloner.eu>
|
||||
|
|
|
@ -408,10 +408,11 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
|
|||
# For explicit "through" M2M fields, do nothing
|
||||
elif (
|
||||
self.connection.features.can_alter_table_drop_column
|
||||
# Primary keys, unique fields, and foreign keys are not
|
||||
# supported in ALTER TABLE DROP COLUMN.
|
||||
# Primary keys, unique fields, indexed fields, and foreign keys are
|
||||
# not supported in ALTER TABLE DROP COLUMN.
|
||||
and not field.primary_key
|
||||
and not field.unique
|
||||
and not field.db_index
|
||||
and not (field.remote_field and field.db_constraint)
|
||||
):
|
||||
super().remove_field(model, field)
|
||||
|
|
|
@ -26,3 +26,6 @@ Bugfixes
|
|||
* Fixed a regression in Django 4.1 that caused a crash of
|
||||
:class:`~django.db.models.expressions.Window` expressions with
|
||||
:class:`~django.contrib.postgres.aggregates.ArrayAgg` (:ticket:`33898`).
|
||||
|
||||
* Fixed a regression in Django 4.1 that caused a migration crash on SQLite
|
||||
3.35.5+ when removing an indexed field (:ticket:`33899`).
|
||||
|
|
|
@ -813,6 +813,17 @@ class SchemaTests(TransactionTestCase):
|
|||
False,
|
||||
)
|
||||
|
||||
def test_remove_indexed_field(self):
|
||||
with connection.schema_editor() as editor:
|
||||
editor.create_model(AuthorCharFieldWithIndex)
|
||||
with connection.schema_editor() as editor:
|
||||
editor.remove_field(
|
||||
AuthorCharFieldWithIndex,
|
||||
AuthorCharFieldWithIndex._meta.get_field("char_field"),
|
||||
)
|
||||
columns = self.column_classes(AuthorCharFieldWithIndex)
|
||||
self.assertNotIn("char_field", columns)
|
||||
|
||||
def test_alter(self):
|
||||
"""
|
||||
Tests simple altering of fields
|
||||
|
|
Loading…
Reference in New Issue