【问题标题】:Django project is missing migrations, prodcution and development has different migrationsDjango项目缺少迁移,生产和开发有不同的迁移
【发布时间】:2021-07-22 21:02:33
【问题描述】:

所以我开始从事一个现在正在生产中的项目,但是以前的开发人员在迁移方面有点搞砸了(或者我错了),开发中的迁移和生产中的迁移不一样(他忽略了它们)而且我无法开始工作,因为开发中缺少迁移,因此数据库没有完全迁移。

我想我可以删除开发中的所有迁移,重置它们,但我认为这在生产中不是一个好主意。我该怎么办?

【问题讨论】:

  • 您是否已将迁移文件复制到生产环境中?使用...migrate 应用您的文件并重新启动您的服务器。用python manage.py showmigrations 显示哪些文件已被应用。
  • 如果您的架构已损坏,请安装django-extensions。您可以使用 reset_db 创建新架构。例如,如果 django 没有正确调整字段,例如UUIDField 到 IntegerField
  • 但是reset_db会清空数据库不是吗?
  • 是的,它会清空你的数据库。您可以运行dumpdata 保存数据,运行loaddata <fixture_name.json> 进行恢复。

标签: django postgresql django-models


【解决方案1】:

迁移有两个目的:1. 创建数据库的 schema,2. 迁移数据库的现有数据(例如,当您将字段从 IntegerField 更改为 CharField 时,您需要编写一些迁移来将数据库中保存的整数转换为相等的char.) 这个只在生产中需要。如果你错过了这些迁移,那不是问题,因为你只需要数据库的模式来开发。但是如何确保您拥有正确的架构?运行python manage.py makemigrations,然后运行python manage.py migrate。一切顺利,无需删除任何先前的迁移。

【讨论】:

  • 我在开发中运行它,但似乎并非所有迁移都被应用,我一直得到 ProgrammingError。
  • ProgrammingError at /dashboard/inspecciones/list 列inspection_inspection.principal_company 不存在第1 行:...reated_at"、"inspection_inspection"。"updated_at"、"inspectio... ^
猜你喜欢
  • 2021-08-30
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2021-09-24
相关资源
最近更新 更多