返回

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

发布时间:2022-09-15 05:49:15 316
# python# django# 数据库# 数据


代码:

注意看:idc_name中的unique=True

class idc_list(models.Model):
city = models.CharField(max_length=32, verbose_name='城市',help_text="如:上海/烟台/洛阳/武汉,等城市名称")
idc_name = models.CharField(unique=True,max_length=32,verbose_name='IDC名称',help_text="城市名称+路名+运营商名称 如:上海-达秀路-万国")
cur_state = models.IntegerField(choices=status_choices, verbose_name='当前状态', default=1,help_text="是:表示在使用,否:表示已经停用")
update_time = models.DateTimeField(verbose_name='更新时间', auto_now=True)
remark = models.CharField(max_length=32,verbose_name='备注',null=True, blank=True)

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_django


问题原因:

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

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


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
数据结构与算法(二)——顺序表 2022-09-15 04:31:06