【发布时间】:2021-10-01 16:07:54
【问题描述】:
上次我在本地更改数据模型并尝试将其推送到生产环境并在那里迁移数据库时,我收到了来自makemigrations 命令的以下响应:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/core/management/base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 201, in handle
pre_migrate_state = executor._create_project_state(with_applied_migrations=True)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/db/migrations/executor.py", line 79, in _create_project_state
migration.mutate_state(state, preserve=False)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/db/migrations/migration.py", line 87, in mutate_state
operation.state_forwards(self.app_label, new_state)
File "/home/JoshuaMSchmidt/.virtualenvs/env/lib/python3.7/site-packages/django/db/migrations/operations/fields.py", line 158, in state_forwards
old_field = model_state.fields.pop(self.name)
KeyError: 'content_type'
现在我无法向前或向后移动,并且卡在服务器上的当前数据模型中。 我可以以某种方式从生产服务器中删除所有旧迁移文件并从当前数据库中重新开始吗?
说实话,我不太确定错误是什么意思
很高兴提供更多信息,因为我也不知道从哪里开始。
【问题讨论】:
-
您的回溯不是
makemigrations的输出,而是migrate命令的输出。 (编辑问题以解决它。)您使用 Django。 3.1.x 用于生产。您是否也在 Django 3.1.x 上创建了迁移?你在生产中使用 MySQL 还是 PostgreSQL? Postgres 在 trasactions 中运行manage,并且数据库在迁移失败之前保持一致的未更改状态。您似乎正在删除通用字段或 content_type 字段。
标签: django django-models django-migrations