我的几个 django 迁移之一没有 运行

one of my few django migrations does not run

我有一个 django 迁移:

0020_delete_cesiumentity

删除一个 table... 然后我用我创建的这个迁移重建它(这是试图解决我以前遇到的问题):

0021_cesiumentity.py

# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-12-19 22:45
from __future__ import unicode_literals

import django.contrib.gis.db.models.fields
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('swsite', '0020_delete_cesiumentity'),
    ]

    operations = [
        migrations.CreateModel(
            name='CesiumEntity',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('be_number', models.CharField(max_length=100)),
                ('image_id', models.CharField(blank=True, max_length=100, null=True)),
                ('mission_id', models.CharField(blank=True, max_length=100, null=True)),
                ('product_type', models.CharField(blank=True, max_length=100, null=True)),
                ('polarization', models.CharField(blank=True, max_length=256, null=True)),
                ('mode_id', models.CharField(blank=True, max_length=100, null=True)),
                ('mode_name', models.CharField(blank=True, max_length=100, null=True)),
                ('acquisition_type', models.CharField(blank=True, max_length=100, null=True)),
                ('image_size_samples', models.CharField(blank=True, max_length=100, null=True)),
                ('image_size_lines', models.CharField(blank=True, max_length=100, null=True)),
                ('sample_spacing_range', models.CharField(blank=True, max_length=100, null=True)),
                ('line_spacing_azimuth', models.CharField(blank=True, max_length=100, null=True)),
                ('pass_direction', models.CharField(blank=True, max_length=100, null=True)),
                ('look_direction', models.CharField(blank=True, max_length=100, null=True)),
                ('grazing_angle', models.CharField(blank=True, max_length=100, null=True)),
                ('azimuth_angle', models.CharField(blank=True, max_length=100, null=True)),
                ('doppler_cone_angle', models.CharField(blank=True, max_length=100, null=True)),
                ('file_format', models.CharField(blank=True, max_length=100, null=True)),
                ('name', models.CharField(max_length=100)),
                ('file_name', models.CharField(max_length=256)),
                ('country_code', models.CharField(blank=True, max_length=64, null=True)),
                ('collection_date', models.DateField(blank=True, null=True)),
                ('collection_start_time', models.CharField(blank=True, max_length=256, null=True)),
                ('corner_coords', models.CharField(max_length=255)),
                ('sensor', models.CharField(max_length=128)),
                ('target_name', models.CharField(blank=True, max_length=256, null=True)),
                ('file_size', models.IntegerField()),
                ('dzi_location', models.CharField(max_length=256)),
                ('kml_location', models.CharField(max_length=256)),
                ('kmz_location', models.CharField(max_length=256)),
                ('thumbnail_location', models.CharField(max_length=256)),
                ('resource_location', models.CharField(max_length=256)),
                ('processed', models.BooleanField(default=False)),
                ('created_at', models.DateField(auto_now_add=True)),
                ('updated_at', models.DateField(auto_now=True)),
                ('mpoly', django.contrib.gis.db.models.fields.PolygonField(srid=4326)),
            ],
        ),
    ]

此迁移不会 运行,导致我的 0022 迁移失败,因为 table 没有放回去。我不确定为什么这不会 运行 或者我是否需要做更多的事情。我试图用一个强制它:

python manage.py migrate swsite 0021_cesiumentity

我刚刚明白了:

要执行的操作: 目标特定迁移:0021_cesiumentity,来自 swsite 运行 迁移: 没有要应用的迁移。

所以我不确定为什么会这样或者我错过了什么?

我以前的迁移有问题,说事情存在(这是有道理的,我不是在开发,而是在测试服务器上工作),所以我不确定是否重要,所以我只是伪造了那些。

使用数据库中的 'django_migrations' table 跟踪 Django 迁移。这就是 Django 记录已应用和未应用迁移的方式。如果您签入此 table,它将向您显示数据库中已 运行 的迁移文件名。

如果要重新运行迁移,需要删除django_migrationstable中对应文件名的行。然后再迁移。

也许你在伪造迁移时犯了一个错误。

python manage.py showmigrations输出什么?如果显示 0021_cesiumentity 已应用,则 运行ning python manage.py migrate swsite 0021_cesiumentity 将无效。

要重新运行那个迁移,你必须伪造回之前的迁移(0020),然后重新运行 python manage.py migrate swsite 0021_cesiumentity.