为什么 django 迁移会临时占用磁盘 space?

Why do django migrations temporarily take disk space?

设置:

  1. Django (2.2.18) 和 Postgres (9.5) 在一台服务器上,同一磁盘。
  2. 迁移正在改变 1 table(添加和删除字段)。

我不确定我的问题是否正确,但我 运行 在应用迁移时遇到了上述设置的问题。错误来自 psycopg2:

DiskFull: could not extend file "base/167296/1842042": wrote only 4096 of 8192 bytes at block 161
HINT:  Check free disk space.

当前磁盘使用量为 20G 中的 14G。我们通过删除一些文件并再次 运行 迁移解决了这个问题。我们观察到磁盘使用率暂时增加到 20G 的 96% 左右,然后又回到 14G。现在我们需要做点什么,这样问题就不会再发生了。我的问题是:

我问是因为我不确定是数据库大小暂时膨胀还是 django 在磁盘上创建临时文件。在第二种情况下,这意味着移动数据库并不能真正解决问题。

我很感激参考,因为我在 django 文档上找不到任何关于此的内容(或者我是盲人)。

请参考

如前所述,如果您在添加的新字段中有任何默认值或没有空约束,PostgreSQL 不会就地执行操作。因此,您可以删除默认值、约束并创建列。然后按照上面提到的 link.

添加它们

关于 RDS 问题, 您可以使用 2 种类型。 RDS Postgres and RDS Aurora.

RDS Aurora 有一个无服务器选项。如果你选择那个,你真的不需要担心存储