diff options
author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-12-23 23:28:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-23 23:28:59 +0100 |
commit | 22ce5d0031bd795ade081394043833e82046016c (patch) | |
tree | 87abd204c71125990771a76c9dfc8d4f3c69e208 /django/db/backends/postgresql/schema.py | |
parent | 5e00bd1f7717149573df9607b848297a520881d3 (diff) | |
download | django-22ce5d0031bd795ade081394043833e82046016c.tar.gz |
Fixed #31106 -- Fixed migrations crash on PostgreSQL 10+ when adding FK constraints inline and changing data.
This allows adding foreign key constraints inline and changing data in
the same migration on PostgreSQL 10+.
Regression in 738faf9da2a5cd03148a36375db80746c99c9623.
Thanks Janne Rönkkö for the report and Simon Charette for the
implementation idea and review.
Diffstat (limited to 'django/db/backends/postgresql/schema.py')
-rw-r--r-- | django/db/backends/postgresql/schema.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/django/db/backends/postgresql/schema.py b/django/db/backends/postgresql/schema.py index cf90bb8f81..e5a0008025 100644 --- a/django/db/backends/postgresql/schema.py +++ b/django/db/backends/postgresql/schema.py @@ -19,7 +19,12 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): sql_delete_index = "DROP INDEX IF EXISTS %(name)s" sql_delete_index_concurrently = "DROP INDEX CONCURRENTLY IF EXISTS %(name)s" - sql_create_column_inline_fk = 'REFERENCES %(to_table)s(%(to_column)s)%(deferrable)s' + # Setting the constraint to IMMEDIATE to allow changing data in the same + # transaction. + sql_create_column_inline_fk = ( + 'CONSTRAINT %(name)s REFERENCES %(to_table)s(%(to_column)s)%(deferrable)s' + '; SET CONSTRAINTS %(name)s IMMEDIATE' + ) # Setting the constraint to IMMEDIATE runs any deferred checks to allow # dropping it in the same transaction. sql_delete_fk = "SET CONSTRAINTS %(name)s IMMEDIATE; ALTER TABLE %(table)s DROP CONSTRAINT %(name)s" |