執(zhí)行Django數(shù)據(jù)遷移時報 1091錯誤及解決方法
問題描述
今天在Pycharm 中的Terminal下,執(zhí)行數(shù)據(jù)遷移操作時,第一步: Python manage.py makemigrations ,是沒有任何問題,但就是在執(zhí)行真正的數(shù)據(jù)遷移時,也就是第二步:Python manage.py migrate 時,報錯,錯誤截圖如下

大概的意思就是 錯誤代碼1091,原因是 “無法刪除'dt_id';請檢查列/鍵是否存在”。
問題的解決
分析:
可能是數(shù)據(jù)庫中的字段結(jié)構(gòu),已經(jīng)完成了對此字段的修改,但是在執(zhí)行數(shù)據(jù)遷移的時候,生成的某個日志文件(一般形如:0003_auto_20191011_2032.py),可能還有一些刪除的字段
# Generated by Django 2.0.6 on 2019-10-11 12:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('modelapp', '0002_student'),
]
operations = [
migrations.RemoveField(
model_name='student',
name='age',
),
migrations.RemoveField(
model_name='student',
name='birthday',
),
migrations.RemoveField(
model_name='student',
name='salary',
),
migrations.AlterField(
model_name='student',
name='tel',
field=models.CharField(max_length=20),
),
]
如上圖的紅色字體問題部分,就是我們這個數(shù)據(jù)遷移時報錯的原因,只要將紅色字體部分注釋掉即可
# Generated by Django 2.0.6 on 2019-10-11 12:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('modelapp', '0002_student'),
]
operations = [
# migrations.RemoveField(
# model_name='student',
# name='age',
# ),
# migrations.RemoveField(
# model_name='student',
# name='birthday',
# ),
# migrations.RemoveField(
# model_name='student',
# name='salary',
# ),
migrations.AlterField(
model_name='student',
name='tel',
field=models.CharField(max_length=20),
),
]
然后我們再次執(zhí)行 Python manage.py migrate 的時候就能成功遷移數(shù)據(jù)了。
總結(jié)
以上所述是小編給大家介紹的執(zhí)行Django數(shù)據(jù)遷移時報 1091錯誤及解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
關(guān)于你不想知道的所有Python3 unicode特性
我的讀者知道我是一個喜歡痛罵Python3 unicode的人。這次也不例外。我將會告訴你用unicode有多痛苦和為什么我不能閉嘴。我花了兩周時間研究Python3,我需要發(fā)泄我的失望。在這些責(zé)罵中,仍然有有用的信息,因為它教我們?nèi)绾蝸硖幚鞵ython3。如果沒有被我煩到,就讀一讀吧2014-11-11

