zoukankan      html  css  js  c++  java
  • ALTER TABLE 报1062

    mysql版本:5.7.28

    表结构

    CREATE TABLE `t2` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `col1` int(11) DEFAULT NULL,
      `col2` bigint(20) DEFAULT NULL,
      `col3` text,
      `col4` varchar(30) DEFAULT NULL,
      `col5` datetime DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `un_index` (`col1`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11057632 DEFAULT CHARSET=utf8mb4;

    在添加字段的时候报错1062

    sql>ALTER TABLE t2 ADD COLUMN col6 INT ( 11 );

    1062 - Duplicate entry '2068603194' for key 'un_index', Time: 37.923000s

    问题原因:表数据较多在执行alter table期间有其他会话执行了造成duplicate entry的语句使online ddl在执行完结构变更回放缓存的时候报错。

    Oline DDL的原理简单一点理解就是将DML操作缓存起来,等到DDL执行完成后重新应用缓存中的DML语句,如果在Oline DDL执行过程中,DML操作产生了Duplicate entry错误,并不会直接影响DDL操作,而是在DDL执行完成最终应用DML时报错,导致DDL执行失败。官方认为该问题是一种限制,并不是Bug,所以目前为止还没有得到解决。

    经过测试只有在唯一键冲突的时候(insert,update)才会影响到DDL,主键冲突没有影响。

    另外在执行insert into ... on duplicate key...或者replace into语句的时候只要是更新了唯一键的字段也会影响online DDL的运行。

  • 相关阅读:
    maven settings
    java.util.Base64
    Centos 7 下 LAMP 部署
    Cisco N3K VPC+HSRP+ospf 配置
    centos 7 下多网卡绑定+ vlan 网卡配置
    centos 7 下 cobbler 安装
    hive0.12 rcfile gzip 测试
    Hive内部表外部表转化分析(装)
    hadoop2.2.0 + hbase 0.94 + hive 0.12 配置记录
    hbase 问题记录
  • 原文地址:https://www.cnblogs.com/wangb2/p/14252609.html
Copyright © 2011-2022 走看看