diff options
| author | Simon Charette <charette.s@gmail.com> | 2018-12-06 11:37:43 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-12-07 13:32:37 -0500 |
| commit | c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f (patch) | |
| tree | 4cd834dbf53f7a8e5ce893d09430f227f7b70429 /django/db | |
| parent | 79c196cfb287893aadc6b0e74603ffde1512170e (diff) | |
Fixed #29182 -- Fixed schema table alteration on SQLite 3.26+.
SQLite 3.26 repoints foreign key constraints on table renames even when
foreign_keys pragma is off which breaks every operation that requires
a table rebuild to simulate unsupported ALTER TABLE statements.
The newly introduced legacy_alter_table pragma disables this behavior
and restores the previous schema editor assumptions.
Thanks Florian Apolloner, Christoph Trassl, Chris Lamb for the report and
troubleshooting assistance.
Diffstat (limited to 'django/db')
| -rw-r--r-- | django/db/backends/sqlite3/schema.py | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/django/db/backends/sqlite3/schema.py b/django/db/backends/sqlite3/schema.py index ad22d03763..255f80dd18 100644 --- a/django/db/backends/sqlite3/schema.py +++ b/django/db/backends/sqlite3/schema.py @@ -21,10 +21,12 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): # Some SQLite schema alterations need foreign key constraints to be # disabled. Enforce it here for the duration of the transaction. self.connection.disable_constraint_checking() + self.connection.cursor().execute('PRAGMA legacy_alter_table = ON') return super().__enter__() def __exit__(self, exc_type, exc_value, traceback): super().__exit__(exc_type, exc_value, traceback) + self.connection.cursor().execute('PRAGMA legacy_alter_table = OFF') self.connection.enable_constraint_checking() def quote_value(self, value): |
