【问题标题】:Re-create django migrations without migrations folder重新创建没有迁移文件夹的 django 迁移
【发布时间】:2020-12-27 21:43:08
【问题描述】:

我有一点问题。

我尝试重新创建我的项目的 sqlite 数据库。唯一的问题是,通过在 git 上上传我的项目,我忽略了每个应用程序的“迁移”文件夹,这样我的客户就不会被它打扰(错误的做法?)。

但是今天,我想从头开始使用该数据库(列顺序,从 csv 数据重新创建完整安装,...)但是当我执行我的迁移命令时,它们检测不到任何更改,只迁移 django 表。

Django 版本:2.0.13 Python:3.7.3

【问题讨论】:

  • 迁移存储在迁移文件夹中。这个想法是makemigrations 检测模型中的更改(与使用migrations 文件中的文件创建模型时检索的模型相比),并且迁移中的文件可以转换为 SQL 查询以迁移数据库。
  • 我明白,但我的问题是我无法检测到 makemigrations 比较更改的内容,以知道尽管我的数据库为空,但没有要应用的更改...
  • 当然,如果存储库不包含任何迁移,它会在哪里找到差异。通常,当您将迁移添加到 git 存储库时不会产生任何问题,因为 Django 可以使用合并迁移:它可以创建合并迁移。
  • 我不会忽略迁移。这听起来像是一场等待发生的灾难。

标签: python django sqlite


【解决方案1】:

我找到了答案,并且通过脚本轻松完成。

# Do this following line as much as you have applications
python path_to_project\manage.py makemigrations <app_name> --empty
# After every empty migrations done, do the two following lines
python path_to_project\manage.py makemigrations
python path_to_project\manage.py migrate

【讨论】:

  • 这只会创建初始迁移文件,你真的不应该首先忽略 repo 中的迁移文件
  • 我同意@IainShelvington。这个解决方案是修复一个容易做的错误并且能够重新创建我的数据库,即使是空的。刚刚完成,每个迁移文件夹都已创建并包含__init__.py
猜你喜欢
  • 2021-05-04
  • 2018-03-07
  • 2022-01-10
  • 1970-01-01
  • 2016-10-27
  • 2015-06-08
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
相关资源
最近更新 更多