gpt4 book ai didi

python - Django 迁移不适用于数据库

转载 作者:行者123 更新时间:2023-12-02 18:43:35 26 4
gpt4 key购买 nike

一点背景:我们使用 docker 容器来运行我们的 django 项目,因为我们有很多人在做这个项目,所以我们把 migrations文件夹到 gitignore (这是对还是错是另一回事)以避免合并冲突。
每次makemigrations运行 - 它总是 001_initial.py因为 Docker 复制了没有 migrations 的 git 项目在里面。取决于 migrate命令来确定哪些更改应用于数据库。现在,有时当有新字段(或重命名字段)时,这已成为一个常见问题 - 尽管这些更改在 myapp\migrations\001_initial.py 中。 - 一次migrate命令运行时,django 认为这些更改已经在数据库中并且它不应用任何迁移。我们正在删除数据库并重新进行迁移,这对开发工作很好,但显然它不适用于生产。有与此相关的问题,人们建议恢复到以前的迁移,这似乎在某些情况下重置并为我们工作 - 例如:

python manage.py migrate myapp zero
但是,如果数据库中存在与全新表的关系(因此 django 提示该表不存在),则在尝试还原时它并不总是有效,部分原因是我们在 docker 容器中的迁移总是从 001_initial.py 开始。 .
这是一个 django 错误还是我们没有遵循任何好的做法,因此出现了问题?我们正在考虑删除 migrations来自 gitignore 的文件夹这可以恢复到较旧的迁移,但是我们不完全确定这是否会解决问题,而且 django 项目是在容器中运行的 - 所以 migrations容器内的文件不会提交到 git repo。

最佳答案

我总是通过 docker composer 迁移:

docker-compose run <django-container> python manage.py migrate

关于python - Django 迁移不适用于数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62484785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com