alter ignore table 添加unique key不生效的问题和临时解决方案
来源:互联网 发布:数据质量评估体系 编辑:程序博客网 时间:2024/05/20 01:34
遇到一个需求,已有的一个表,需要把已有的一个普通索引变成唯一索引,表数据量大约在百万级别,duplicate的量大约在几K左右。想到了使用alter ignore table (http://dev.mysql.com/doc/refman/5.5/en/alter-table.html),于是便找了一个测试库,发现依旧报uk冲突:
- root@test 12:55:26>alter ignore table vertical_bail_detail_0007 add unique key uk_ooid(out_order_id);
- ERROR 1062 (23000): Duplicate entry 'GT2-18578' for key 'uk_ooid'
开始怀疑是mysql版本的问题,于是在5.1.48和5.5.18上都试了一遍,结果一样,于是便找了一下mysql的bug,发现确实是一个innodb的bug,链接(http://bugs.mysql.com/bug.php?id=65731;http://bugs.mysql.com/bug.php?id=40344)
bug#40344里面提到了一个解决方法:workaround is to first run "set session old_alter_table=1;"试了一下,确实可以。
- root@test 01:41:52>set session old_alter_table =on;
- Query OK, 0 rows affected (0.00 sec)
- root@test 01:42:44>alter ignore table vertical_bail_detail_0007 add unique key uk_ooid(out_order_id),drop index IDX_BAIL_DETAIL_OOID;
- Query OK, 1430517 rows affected (1 min 11.19 sec)
- Records: 1430517 Duplicates: 103 Warnings: 0
ps1:注意,如果你要是想使用set session old_alter_table =on;来解决这个问题,而且有是有主备的情况,记得执行前设置一下set session sql_log_bin=off.以免备库报错,同样,还需要再备库重复一下主库的操作。
ps2:看了一下bug的时间,08年提的bug,12年才有人close,而且还是到5.6.6才给close,不得不吐槽一下,bug的fix周期真久...
-----
最近看fast index creation,官方文档上列出过这个问题(http://dev.mysql.com/doc/refman/5.5/en/innodb-create-index-limitations.html)
- alter ignore table 添加unique key不生效的问题和临时解决方案
- alter ignore table 添加unique key
- alter ignore table add unique key
- mysql 在修改添加字段(alter table 表名 add column 或者 modify column)且带unique时提示duplicate entry for key的原因以及解决方案
- git ignore 添加后不生效 解决办法
- git ignore 添加忽略文件不生效解决办法
- git ignore不生效原因
- 添加language和region定制不生效问题
- mysql建立索引的优缺点|创建索引alter或create索引分类(PRIMARY KEY,UNIQUE KEY,FULLTEXT,INDEX)作用查看索引show index from table
- alter table move和alter table shrink space的区别
- MySQL如何创建主键?Alter table add PRIMARY KEY的用法和例子
- MySQL如何创建主键?Alter table add PRIMARY KEY的用法和例子
- MySQL如何创建主键?Alter table add PRIMARY KEY的用法和例子
- MySQL alter Table添加列的性能
- ie7下脚本添加的样式不生效问题
- 关于iptables添加规则不生效的问题
- ALTER TABLE ADD UNIQUE (b); INSERT INTO ON DUPLICATE KEY UPDATE
- MSSQL ALTER TABLE 用语句修改Primary key 的ID
- Android中MD相关的控件介绍及使用
- Access denied for user 'root'@'localhost' (using password: YES)
- TLD算法的相关研究(3)
- Oracle 游标属性
- andorid面试题和笔记(持续更新)(framework)
- alter ignore table 添加unique key不生效的问题和临时解决方案
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- idea中配置php的开发调试环境
- python 中输出字符的颜色控制属性
- ViewPager的自动轮播与无限录播
- CentOS7+apache+php7+mysql5.7配置
- SpringMVC 启动流程及相关源码分析
- 一、Marvell 88W8686 WiFi模块的初始化代码
- 高软作业lab3