繁体   English   中英

Django缺少迁移文件-如何将数据库与主文件同步?

[英]Django missing migrations file - how to sync db with master file?

我的一位开发人员从大师那里签出,并为我们的网站创建了新模型。 他进行了makemigrations,然后进行了迁移,显然创建了我们想要的表。

但是,他从未将更改提交到github,而是更改了生产数据库。 因此,当我今天去添加一个表时,当我进行makemigrations时,终端会列出一些我已经知道存在的表...我就像“ YOLO!”。 并无论如何都运行了migrate命令,然后将其删除。

因此,由于迁移文件不在我的迁移文件夹中,因此django认为需要创建这些表...然后创建它们并对其进行呕吐,因为它们已经存在。

另一个开发人员不在城里探望家人,因此无法提交文件。

我该如何弄直呢? 我想我需要运行./manage.py migration my_app --fake

但是我不完全了解它的作用,所以我不想走YOLO路线,把事情搞砸了……

好的,我向所有人保证我今天已经在解决这个问题上工作了9.5个小时。 原来这是答案:

Django迁移:关系已经存在

但是,由于存在一些拼写/语法错误,因此很难理解另一个人和我有同样的问题。

重申解决方案:

  1. 类型:./manage.py makemigrations your_app
  2. 导航到my_app / migrations文件夹,然后打开刚刚创建的迁移文件(通常看起来像'0005_modelsandstuff_blablabla.py”
  3. 删除尚未存在的模型。 保存文件并关闭
  4. 类型:./manage.py迁移your_app --fake
  5. 然后,这将立即将数据库中的内容与您的模型架构同步,而无需更改任何实际数据库
  6. 类型:./manage.py makemigrations your_app
  7. 类型:./manage.py迁移your_app

就是这样! 一切都重新同步了。 就像快速戳戳一样,我想说JavaScript很烂。 谢谢。

执行以下步骤应该可以解决您的问题。

  1. 备份数据库
  2. 存储您的更改(以便仅选择缺少的架构更改)
  3. 创建迁移(这将创建已应用的架构更改)
  4. 使用--fake运行迁移(这将伪造已完成的架构更改)
  5. 套用您的变更
  6. 创建迁移
  7. 运行迁移

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM