相关疑难解决方法(0)

Django 迁移与迁移图中的多个叶节点发生冲突

使用 Django 1.11.22 我正在尝试运行迁移

python manage.py migrate
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration base.0036_auto_20190227_1226 is applied before its dependency base.0027_auto_20170801_1228_squashed_0037_auto_20190222_1347 on database 'default'.
Run Code Online (Sandbox Code Playgroud)

我第一次尝试解决这个问题是

sudo -u postgres psql -d albatros -c \
"DELETE FROM django_migrations WHERE name = '0036_auto_20190227_1226' AND app = 'base'"
Run Code Online (Sandbox Code Playgroud)

希望从迁移表中删除迁移可以修复它。不幸的是我现在得到:

CommandError: Conflicting migrations detected; multiple leaf nodes in the migration graph: (0037_auto_20190222_1347, 0036_auto_20190227_1226 in base).
To fix them run 'python manage.py makemigrations --merge'
Run Code Online (Sandbox Code Playgroud)

当尝试 makemigrations --merge 时,它​​没有找到任何要合并的迁移。这就是 showmigrations 的样子:

 ./manage.py  showmigrations base
base
 [X] 24_initial
 [X] 24_to_26
 [X] 26_to_27
 [X] …
Run Code Online (Sandbox Code Playgroud)

django django-migrations

16
推荐指数
1
解决办法
3万
查看次数

Django迁移文件在另一个应用程序?

让我们想象一下以下简化的Django项目:

<root>/lib/python2.7/site-packages/externalapp/shop
<root>/myapp
Run Code Online (Sandbox Code Playgroud)

myappexternalapp.shop.models通过添加几个字段来扩展模型.manage.py makemigrations确实生成了名为0004_auto_20150410_2001.py的模式迁移文件:

from __future__ import unicode_literals
from django.db import models, migrations


class Migration(migrations.Migration):

    # __init__ is added by me as an attempt how to tell django's
    # migration loader operations are for the different application
    def __init__(self, name, app_label):
        super(Migration, self).__init__(name, 'shop')

    dependencies = [
        ('myapp', '__first__'),
        ('shop', '0003_auto_20150408_0958'),
    ]

    operations = [
        migrations.AddField(
            model_name='product',
            name='vat',
            field=models.ForeignKey(to='myapp.VAT', null=True),
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

如果<root>/lib/python2.7/site-packages/externalapp/shop/migrations/默认情况下将上述迁移模式放在路径中,manage.py migrate则会正确添加成功和表字段.

但是,如果我确实将上述迁移文件移动到myapp/migrations/,则以下manage.py …

python django django-models django-admin

7
推荐指数
1
解决办法
5382
查看次数