如何忽略生产中的一些迁移
How to ignore some migrations in production
错误地,现在在生产中存在不一致,我的本地 Django 迁移和 makemigrations
命令将生成正确的迁移,当我在本地 运行 使用空数据库时。例如,此迁移将生成:
class Migration(migrations.Migration):
dependencies = [
('campaign', '0208_auto_20190619_0929'),
]
operations = [
migrations.RemoveField(
model_name='bannerad',
name='average_price',
),
migrations.RemoveField(
model_name='bannerad',
name='click',
),
.... blah
migrations.AlterField(
model_name='bannerad',
name='size',
field=models.IntegerField(choices=[(0, '120x240'), (1, '120x600'), (2, '970x250'), (3, '160x600'), (4, '240x240'), (5, '300x100'), (6, '300x250'), (7, '468x60'), (8, '600x300'), (9, '728x90')]),
),
]
但在生产中 运行ning 生成的迁移已经迁移(例如生产数据库中的 Bannerad 模型没有 average_price
)
当我 运行 生产中的 migrate
命令时。我该如何解决这个问题?
您可以使用 --fake
参数将迁移标记为已应用
例如伪造每个未应用的迁移,直到并包括 0209
:
manage.py migrate --fake campaign 0209
请注意,您只能伪造完整的迁移,而不能伪造迁移中的单个操作。
错误地,现在在生产中存在不一致,我的本地 Django 迁移和 makemigrations
命令将生成正确的迁移,当我在本地 运行 使用空数据库时。例如,此迁移将生成:
class Migration(migrations.Migration):
dependencies = [
('campaign', '0208_auto_20190619_0929'),
]
operations = [
migrations.RemoveField(
model_name='bannerad',
name='average_price',
),
migrations.RemoveField(
model_name='bannerad',
name='click',
),
.... blah
migrations.AlterField(
model_name='bannerad',
name='size',
field=models.IntegerField(choices=[(0, '120x240'), (1, '120x600'), (2, '970x250'), (3, '160x600'), (4, '240x240'), (5, '300x100'), (6, '300x250'), (7, '468x60'), (8, '600x300'), (9, '728x90')]),
),
]
但在生产中 运行ning 生成的迁移已经迁移(例如生产数据库中的 Bannerad 模型没有 average_price
)
当我 运行 生产中的 migrate
命令时。我该如何解决这个问题?
您可以使用 --fake
参数将迁移标记为已应用
例如伪造每个未应用的迁移,直到并包括 0209
:
manage.py migrate --fake campaign 0209
请注意,您只能伪造完整的迁移,而不能伪造迁移中的单个操作。