Python 我为数不多的django迁移之一没有运行

Python 我为数不多的django迁移之一没有运行,python,django,postgis,Python,Django,Postgis,我有一个django迁移: 0020删除 这会删除一个表。。。 然后我重建了它,这是为了修复我之前创建的迁移中的一个问题: 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

我有一个django迁移:

0020删除

这会删除一个表。。。 然后我重建了它,这是为了修复我之前创建的迁移中的一个问题:

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迁移失败,因为表未放回。我不知道为什么这不运行,或者我是否需要做更多的事情。我试图用一个:

python manage.py迁移swsite 0021_cesumentity

我只知道:

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

所以我不知道为什么会这样,或者我错过了什么


我以前的迁移有问题,说存在一些东西,这很有意义,我不是在开发,而是在测试服务器上工作,所以我只是假装这些东西,如果有什么问题,我不确定。

Django迁移是使用数据库中的“Django_migrations”表跟踪的。这就是Django记录已应用和未应用迁移的方式。如果您签入此表,它将显示已在DB上运行的迁移文件名


如果要重新运行迁移,则需要删除django_migrations表中具有相应文件名的行。然后再次迁移。

可能您在假装迁移时犯了错误

python管理.py showmigrations的输出是什么?如果显示应用了0021_cesumentity,则运行python manage.py migrate swsite 0021_cesumentity将没有任何效果


要重新运行该迁移,您必须在0020之前假回迁移,然后重新运行python manage.py migrate swsite 0021_cesumentity。

如何假回之前的迁移?我确实做了演示迁移,它在0021_cresumentit上有一个[X]如果迁移有一个[X],那么要么您已经运行了它,要么您伪造了它。给出了一个例子,说明了如何通过先假扮回前一个迁移来重新运行迁移。是的,它工作正常,所以我将此标记为正确的,谢谢您的帮助!