如何在 Django 1.9+ 中合并连续的数据库迁移?

How to merge consecutive database migrations in django 1.9+?

迁移允许从一个数据库架构转换为另一个数据库架构,同时维护数据库中的当前数据。 Django 允许使用命令 python manage.py makemigrations

创建迁移

每次 makemigrations 运行 都会根据 models.py 文件中检测到的更改添加一个新的迁移文件 000n..

有时在对 models.py 进行小的更改后,我想 运行 进行迁移,但不希望创建新的迁移,因为之前的迁移尚未使用,这允许它们合并在一起,主要是因为运行当数据库中有大量数据时,在生产中进行每次迁移可能会花费很多时间,因此事先合并迁移可能更可取。

有没有办法允许新迁移 000n.. 与现有迁移 000(n-1).. ?

您要查找的命令是squashmigrations。它将把给定应用程序的所有未应用的迁移合并到一个文件中。

I want to run makemigrations but do not want a new migration to be created because the previous migrations haven't been used yet

这不是问题,Django 运行s migrations 从上到下,意思是:你最新的迁移文件会等到其他之前的迁移文件都运行。

because running each migration in production can take a lot of time when there is a lot of data in the database

您的数据库中有多少数据?如果真的很多,那么您必须已经有复制和冗余数据库服务器。在这种情况下,将读取和写入切换到一个,比如从服务器,运行 主服务器中的迁移。然后将流量切换回主服务器,在此之前确保它们之间的延迟为 0 并且新模式在它们之间正确复制