【问题标题】:How to run django migrations with one command如何使用一个命令运行 django 迁移
【发布时间】:2021-02-09 16:59:36
【问题描述】:

我对 Django 迁移有疑问。我的项目中有多个数据库。我想为他们所有人进行迁移。我编写了自己的迁移,如果我运行以下命令,一切正常。

python manage.py migrate app-name first_migration
python manage.py migrate --datatbase=db_1 app-name first_migration
python manage.py migrate --datatbase=db_2 app-name first_migration

python manage.py migrate app-name second_migration
python manage.py migrate --datatbase=db_1 app-name second_migration
python manage.py migrate --datatbase=db_2 app-name second_migration

python manage.py migrate app-name third_migration
python manage.py migrate --datatbase=db_1 app-name third_migration
python manage.py migrate --datatbase=db_2 app-name third_migration

但我想自动化它,只运行:

python manage.py migrate 

不幸的是,当我这样做时,migration3 出现以下错误

django.db.utils.operationalerror no such column: column_name

但是在migration2中添加了column_name

有人知道,我该如何解决这个问题并使用一个命令运行所有迁移?

【问题讨论】:

  • 关于标题中的问题:不幸的是,您需要为每个数据库执行 _execute_migrate(您可以为此编写脚本)。但是你有没有设置任何路由器? (在docs 中查看更多信息)

标签: python django migration database-migration


【解决方案1】:

为了迁移所有模型,有 2 个命令:

  1. python manage.py makemigrations
  2. python manage.py 迁移

【讨论】:

  • 我知道,但在这种情况下,它没有帮助。我创建了migration2来在我的数据库中添加新字段,在migration3中我从其他列复制和转换数据,因为我不想丢失数据,之后我删除了转换后的旧字段。所以,我写的命令在这种情况下没有帮助......
  • 它发生在我身上,我从迁移文件夹中删除了所有文件并删除了我的 db.sqlite3 数据库。然后我再次运行这两个命令: 1. python manage.py makemigrations。 2. python manage.py 迁移
  • 好的,您是否丢失了数据库数据?就我而言,有必要保留数据库中的所有信息...
  • 您使用的是哪个数据库?就我而言,我使用 Django 附带的 sqllite3。是的,在删除这些文件后,我的数据丢失了,但我的问题得到了解决。
  • 所以,这不是一个解决方案...我在上面的评论中说我不能丢失任何数据...
猜你喜欢
  • 2015-09-30
  • 1970-01-01
  • 2020-06-22
  • 2018-05-05
  • 2020-10-24
  • 2012-08-13
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多