意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

django.db.utils.InternalError: (1061, "Duplicate key name(django多对多)

来源:恒创科技 编辑:恒创科技编辑部
2023-12-26 14:07:59


代码:

注意看:idc_name中的unique=True

 (models.):
    city  models.(max_length, verbose_name,help_text)
    idc_name  models.(unique,max_length,verbose_name,help_text)
    cur_state  models.(choicesstatus_choices, verbose_name, default,help_text)
    update_time  models.(verbose_name, auto_now)
    remark  models.(max_length,verbose_name,null, blank)

python manage.py migrate

时报错:

django.db.utils.InternalError: (1061, "Duplicate key name 'cmdb_idc_list_idc_name_8ce6f945_uniq'")


解决方案:

连接到数据库内把这个约束字段删除,保存,重新migrate

如果一次修改了models内的多个字段时报错的,需要同时删除数据库内的多个字段的unique后重新运行。

django.db.utils.InternalError: (1061, "Duplicate key name_models


问题原因:

经过测试,发现django的migrate,不是事务性的,是逐个动作执行的。

也就是说如果后面的动作由于某种原因报错了,前面的动作会执行,我的这个"operations"如果在报错的动作前面,就会导致我这个动作执行完成,实际上数据库内已经存在了这条“约束”,等你修改好其他bug想再运行migrate时他会调用已经产生的”migrations 文件“,这个文件内有再次执行”unique“的动作,此时就会提示你已经存在。


上一篇: 实例详解Python面向对象的四大特征 下一篇: 简单学习Python字符和列表(实例详解)