无法在 Postgres 数据库中应用 Django 迁移

Unable to apply Django migration in Postgres DB

在 Django 应用程序中,我使用的是 Postgres 数据库。 我有两个 table,其中一个有 76 万条记录,另一个有 8.2 万条记录。

我创建了一个新的迁移文件,我在其中向应用程序中的 table 添加了一个新列,并将默认值设置为 0.

我的数据库托管在 Ubuntu EC2 实例 上,其中 RAM8 GB.

当我尝试使用 python manage.py migrate app_name migration_file_name 应用迁移时,出现以下错误:

File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) django.db.utils.OperationalError: SSL SYSCALL error: EOF detected

我已经完成了这个解决方案Postgres SSL SYSCALL error: EOF detected with python and psycopg但不确定是内存问题还是其他问题。

Python: 2.7.12
Django 1.11.15
Ubuntu: 18.04
Postgres DB: 10.7

还有什么问题?

您的查询可能太大 - 操作太多。这会导致系统 运行 内存不足。

添加具有默认值的新列触发 table 重建。为避免使用大 table,您可以分 3 次创建迁移。

  • 首先,创建一个迁移文件以添加没有默认值的 NULLABLE 列。
  • 其次,创建一个空迁移,用 null=True
  • 的所有实例的默认值填充这个新的空值
  • 第三,创建一个迁移,定义您的列不能为默认值空