无法在 Postgres 数据库中应用 Django 迁移
Unable to apply Django migration in Postgres DB
在 Django 应用程序中,我使用的是 Postgres 数据库。
我有两个 table,其中一个有 76 万条记录,另一个有 8.2 万条记录。
我创建了一个新的迁移文件,我在其中向应用程序中的 table 添加了一个新列,并将默认值设置为 0.
我的数据库托管在 Ubuntu EC2 实例 上,其中 RAM 为 8 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
的所有实例的默认值填充这个新的空值
- 第三,创建一个迁移,定义您的列不能为默认值空
在 Django 应用程序中,我使用的是 Postgres 数据库。 我有两个 table,其中一个有 76 万条记录,另一个有 8.2 万条记录。
我创建了一个新的迁移文件,我在其中向应用程序中的 table 添加了一个新列,并将默认值设置为 0.
我的数据库托管在 Ubuntu EC2 实例 上,其中 RAM 为 8 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 的所有实例的默认值填充这个新的空值
- 第三,创建一个迁移,定义您的列不能为默认值空