Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #22168 -- Fixed migrations failing on sqlite when column names …

…are SQL keywords

Thanks to trac user fallen_flint for the report and initial patch.
  • Loading branch information...
commit c679cb7f600b13646a1a2b5fc8a03dfcc2e413f2 1 parent a19f0d0
@bmispelon bmispelon authored
View
4 django/db/backends/sqlite3/schema.py
@@ -83,8 +83,8 @@ def _remake_table(self, model, create_fields=[], delete_fields=[], alter_fields=
field_maps = list(mapping.items())
self.execute("INSERT INTO %s (%s) SELECT %s FROM %s" % (
self.quote_name(temp_model._meta.db_table),
- ', '.join(x for x, y in field_maps),
- ', '.join(y for x, y in field_maps),
+ ', '.join(self.quote_name(x) for x, y in field_maps),
+ ', '.join(self.quote_name(y) for x, y in field_maps),
self.quote_name(model._meta.db_table),
))
# Delete the old table
View
17 tests/migrations/test_operations.py
@@ -195,6 +195,23 @@ def test_add_field(self):
operation.database_backwards("test_adfl", editor, new_state, project_state)
self.assertColumnNotExists("test_adfl_pony", "height")
+ def test_column_name_quoting(self):
+ """
+ Column names that are SQL keywords shouldn't cause problems when used
+ in migrations (#22168).
+ """
+ project_state = self.set_up_test_model("test_regr22168")
+ operation = migrations.AddField(
+ "Pony",
+ "order",
+ models.IntegerField(default=0),
+ )
+ new_state = project_state.clone()
+ operation.state_forwards("test_regr22168", new_state)
+ with connection.schema_editor() as editor:
+ operation.database_forwards("test_regr22168", editor, project_state, new_state)
+ self.assertColumnExists("test_regr22168_pony", "order")
+
def test_add_field_preserve_default(self):
"""
Tests the AddField operation's state alteration

0 comments on commit c679cb7

Please sign in to comment.
Something went wrong with that request. Please try again.