首页 文章

django 1.8迁移内容类型完整性错误

提问于
浏览
1

我将我的项目从django 1.6升级到1.8 . 迁移时,我收到contenttype的错误:

django.db.utils.IntegrityError: null value in column "name" violates not-null constraint

详细信息:失败的行包含(31,null,django_auth,adgroup) .

我尝试迁移contenttype 0002但它告诉我:

django.db.utils.ProgrammingError: relation "django_content_type" already exists

我如何克服第一个迁移文件?

3 回答

  • 0

    发生了什么事情,你的数据库已经有了迁移,但django没有意识到它,因为有多种原因(重新命名或删除较旧的迁移等)

    您可以做的是压平旧的迁移,然后假冒迁移 . 因此,请在初始迁移之前删除所有迁移 .

    然后,运行 python manage.py makemigrationspython manage.py migrate (可能会抛出错误)和 python manage.py migrate --fake-initial . 这是django docs的链接 . 这绝对不是最好的做法,但应该让你开始运行 . 初始迁移有时会导致奇怪的问题 . 如果这不能解决问题,请使用 --fake 而不是 fake-initial 进行尝试 . 另外,我建议在开始这个旅程之前先转储数据库 . 祝好运 .

  • 1

    看起来您可能错误地在 contenttypes 应用程序中进行了 0002_remove_content_type_name 迁移:

    contenttypes
     [X] 0001_initial
     [X] 0002_remove_content_type_name
    

    你可以使用以下方法撤消:

    ./manage.py migrate contenttypes 0001 --fake
    

    然后正确运行 0002 迁移,以便从 contenttypes 表中删除名称列:

    ./manage.py migrate contenttypes
    

    然后再次尝试为您的应用运行迁移 .

  • 3

    Django 1.6数据库可能包括也可能不包括南迁移,而迁移到1.8则使用内部迁移 .

    为了我,

    django-admin.py migrate --fake-initial
    

    做了伎俩 .

相关问题