【发布时间】:2023-03-12 03:12:01
【问题描述】:
设置:
- Django (2.2.18) 和 Postgres (9.5) 在一个服务器,同一个磁盘中。
- 迁移正在更改 1 个表(添加和删除字段)。
我不确定我的问题是否正确,但我在应用迁移时遇到了上述设置的问题。错误来自 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。现在我们需要做点什么,这样问题就不会再发生了。我的问题是:
- 如果我们将数据库移动到
RDS之类的位置,就够了吗?
我问是因为我不确定是数据库大小暂时膨胀还是 django 在磁盘上创建了临时文件。在第二种情况下,这意味着移动数据库实际上并不能解决问题。
我很感激参考,因为我在 django 文档上找不到任何相关内容(或者我是盲人)。
【问题讨论】:
-
我不了解 Django。但是像 Postgres 这样的 DBMS 使用事务。简而言之,它们将一堆操作绑定在一起,就像一个大操作,要么完全执行,要么根本不执行。为此,需要保留不同的日志以撤消已经完成的更改,或者如果它们尚未完全完成则重做它们。这些日志当然(暂时)需要空间。取决于在交易中完成了多少,这可能是相当大的。并且可能还需要临时将一些数据刷新到磁盘以进行某些操作。所以你的观察并不令人惊讶。
标签: django postgresql django-migrations