Django设置联合唯一约束 -- migrate时报错处理
异常信息:
a unique database constraint for 2 or more fields together
场景描述:
对于ORM中多对多关系的中间表,如果该关系表是手动创建的,建表的时候,两个字段没有添加联合唯一约束;
系统运行一段时间后,若是需求变更,需要对其增加联合唯一约束,而当前的关系表中可能已存在重复数据了,那么在添加联合唯一约束,执行数据同步操作migrate的时候,就会报错;这时,可以参考这种处理方式。
推荐一篇博客:http://shineforever.blog.51cto.com/1429204/1729286
一个表的model中,根据生产环境需要,需要设置site和对应的cdn服务器ip是联合唯一的,最开始创建表的时候,没有考虑到这个问题,后来设置了联合唯一约束 unique_together,在同步数据migrate的时候,报错:a unique database constraint for 2 or more fields together
很明显数据库中有很多这两个字段重复的数据,所以要删除重复数据后再migrate就没问题了,但是怎么删除这些数据呢?
通过以下两个步骤即可:
1)CREATE TEMPORARY TABLE tmp_table SELECT * FROM 目标表;
2)delete from 目标表 where id not in (select max(id) from tmp_table group by cdn_ipaddr,site_id);
说明:
创建临时表,把目标表的数据复制到临时表中;
删除目标表中数据,只留id最大的‘重复数据’即可!
Django设置联合唯一约束 -- migrate时报错处理的更多相关文章
- mysql 给表添加唯一约束、联合唯一约束,指定唯一约束的名字
表结构 FIELD TYPE COLLATION NULL KEY DEFAULT Extra PRIVILEGES ...
- laravel migrate时报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
今天在学习laravel的路由模型绑定时,在按照文档执行php artisan migrate时报错. In Connection.php line 664: SQLSTATE[42000]: Syn ...
- Lavarel 执行:php artisan migrate时报错
错误如下: 执行:php artisan migrate时报错: [PDOException]SQLSTATE[HY000] [2002] Connection refused 解决办法: 第一步:. ...
- Django model中设置多个字段联合唯一约束
Django中model部分的写法, 参见 unique-together 部分文档. class MyModel(models.Model): field1 = models.CharField(m ...
- laravel5.7 migrate 时报错 Specified key was too long error 解决方案
今天在数据迁移时突然报了 Specified key was too long error 的错,解决掉之后就把这个问题记录下来. 报错原因 Laravel 5.4 + 默认使用 utf8mb4 字 ...
- Laravel 5.4 migrate时报错: Specified key was too long error
Laravel 5.4默认使用utf8mb4字符编码,而不是之前的utf8编码.因此运行php artisan migrate 会出现如下错误: [Illuminate\Database\QueryE ...
- Django在使用logging日志模块时报错无法操作文件 logging error Permission Error [WinError 32]
产生原因: 这个问题只会在开发的时候遇到,而且配置是写入到setting.py配置文件,我们定义了日志文件大小,当日志满了的时候,这时候就会遇到这个问题, 因为在使用Pycharm运行django的时 ...
- django中的model 的unique_together(联合唯一)
unique_together解释 nique_together 这个元数据是非常重要的一个!它等同于数据库的联合约束! 举个例子,假设有一张用户表,保存有用户的姓名.出生日期.性别和籍贯等等信息.要 ...
- Oracle数据库,非空约束、主键约束、外键约束、唯一约束
非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Uniqu ...
随机推荐
- IntelliJ IDEA 2017版 spring-boot2.0.4的集成JSP
一.必须依赖四个包,其中三个是springboot自带包,可以不写版本号,有一个不在springboot中,需要设置版本号 <!--引入Spring Boot内嵌的Tomcat对Jsp的解析包- ...
- 为什么行内元素不能设置margin-top/margin-bottom/padding-top/padding-bottom?
HTML 里的元素分为替换元素(replaced element)和非替换元素(non-replaced element).- 替换元素是指用作为其他内容占位符的一个元素.最典型的就是img,它只是指 ...
- Calendar 得到前一天当前时间
@Test public void test(){ //因为Calendar的构造方法是私有的,所以实例化一个Calendar对象用getInstance方法 Calendar calendar = ...
- 20155205 2016-2017-2 《Java程序设计》第10周学习总结
20155205 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 计算机网络基础 什么是网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数 ...
- PreTranslateMessage(MSG* pMsg)专题
.. BOOL CQuickMosaicDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message==WM_KEYDOWN) //键盘按下 { ...
- Leetcode--572. Subtree of Another Tree(easy)
Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...
- 20155326 2016-2017-2 《Java程序设计》第十周学习总结
20155326 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 计算机网络基础 1.计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的 ...
- WP8整合Bing应用,生活有求Bing
在Windows 8中,Bing应用一直随系统而存在,提供多样化的资讯.它们是我的“御用”App,因为可以根据我的使用习惯对应用进行定制. 在Windows Phone 8系统第三次官方更新之后, B ...
- hdu 5013 优化疑问+dp
http://acm.hdu.edu.cn/showproblem.php?pid=5013 m个游客,n座城市(m, n <= 16), 每个人从1走到n, 每次有一定概率停在原地,然后以后就 ...
- shell 命令 查看本机ip
ifconfig 结果有很多,查看env0的inet,就是本机的ip地址