summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCaio Ariede <caio.ariede@gmail.com>2019-10-04 10:55:41 -0300
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-10-07 14:37:16 +0200
commit282138a7bbfc19681327042b9d462e038d88dda6 (patch)
tree0686ba078d5c99a3d387036dd3c70664a148e6ba /docs
parent3ea957b543e275cb3cd7e86c9858922b1f1711c1 (diff)
[3.0.x] Fixed #28273 -- Doc'd fast nullable column creation with defaults.
Backport of 06909fe084f87a65459a83bd69d7cdbe4fce9a7c from master
Diffstat (limited to 'docs')
-rw-r--r--docs/ref/migration-operations.txt15
1 files changed, 15 insertions, 0 deletions
diff --git a/docs/ref/migration-operations.txt b/docs/ref/migration-operations.txt
index b5201b3219..f0436a1366 100644
--- a/docs/ref/migration-operations.txt
+++ b/docs/ref/migration-operations.txt
@@ -150,6 +150,21 @@ a default value to put into existing rows. It does not affect the behavior
of setting defaults in the database directly - Django never sets database
defaults and always applies them in the Django ORM code.
+.. warning::
+
+ On older databases, adding a field with a default value may cause a full
+ rewrite of the table. This happens even for nullable fields and may have a
+ negative performance impact. To avoid that, the following steps should be
+ taken.
+
+ * Add the nullable field without the default value and run the
+ :djadmin:`makemigrations` command. This should generate a migration with
+ an ``AddField`` operation.
+
+ * Add the default value to your field and run the :djadmin:`makemigrations`
+ command. This should generate a migration with an ``AlterField``
+ operation.
+
``RemoveField``
---------------