ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1'

249人阅读 评论(0) 收藏 举报
分类:
测试环境
1.MYSQL版本
+------------+
| version()  |
+------------+
| 5.7.18-log |
+------------+

2.建表语句
mysql> show create table M;                                                                                                                                                                                                                                                                                                                                                CREATE TABLE 
create table `M` (
  `id` int(10) NOT NULL DEFAULT '0',
  `domain` varchar(255) DEFAULT NULL,
  `ip` int(10) unsigned DEFAULT NULL,
  `ipv6` varbinary(16) DEFAULT NULL,
  `intime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `domain` (`domain`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

3.表结构

mysql> desc M;
+-----------+------------------+------+-----+-------------------+-----------------------------+
| Field     | Type             | Null | Key | Default           | Extra                       |
+-----------+------------------+------+-----+-------------------+-----------------------------+
| id        | int(10)          | NO   | PRI | 0                 |                             |
| domain    | varchar(255)     | YES  | UNI | NULL              |                             |
| ip        | int(10) unsigned | YES  |     | NULL              |                             |
| ipv6      | varbinary(16)    | YES  |     | NULL              |                             |
| intime    | timestamp        | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-----------+------------------+------+-----+-------------------+-----------------------------+

测试如下:

在建表的时候没有使用自增ID,这样会引业务后续出现小问题,现在通过数据交换的方式更改M表ID为自增ID

注:生产环境谨慎执行

1.直接更改M表时,是更改不了的,有主键冲突
mysql> alter table M change id id int not null auto_increment;
ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY'


2.可以用数据交换的方式来进行更改,创建新表M_new

mysql> CREATE TABLE M_new LIKE M;

Query OK, 0 rows affected (0.49 sec)


3.更改新表M_new为自增ID

mysql> ALTER TABLE M_new 
    -> CHANGE COLUMN `Id` `Id` INT(10) NOT NULL AUTO_INCREMENT;
Query OK, 0 rows affected (0.79 sec)
Records: 0  Duplicates: 0  Warnings: 0


4.将M表数据插入到M_new表中,注意select的列是除了ID列

mysql> insert into M_new (domain,ip,ipv6,intime) select domain,ip,ipv6,intime from M;


5.数据插入完成后,交换表名
mysql>RENAME TABLE M TO M_old, M_new TO M;

Query OK, 0 rows affected (0.34 sec)

6.再次查看M表,现在是自增ID了

mysql> desc M;
+-----------+------------------+------+-----+-------------------+-----------------------------+
| Field     | Type             | Null | Key | Default           | Extra                       |
+-----------+------------------+------+-----+-------------------+-----------------------------+
| Id        | int(10)          | NO   | PRI | NULL              | auto_increment              |
| domain    | varchar(255)     | YES  | UNI | NULL              |                             |
| ip        | int(10) unsigned | YES  |     | NULL              |                             |
| ipv6      | varbinary(16)    | YES  |     | NULL              |                             |
| intime    | timestamp        | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
|+-----------+------------------+------+-----+-------------------+-----------------------------+

查看评论

ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ for key

当我用SQLyog尝试修改已有记录的mysql数据表的主键为自动增长时,报出以下错误 ALTER TABLE causes auto_increment resequencing, result...
  • atvhghnhtb
  • atvhghnhtb
  • 2014-02-12 20:59:43
  • 1734

设置数据库主键自动增长时出现提示:alter table cause auto_increment resequencing,resulting in duplicate entry '

解决办法: (1)该字段主键值有0,将0设置为其他不冲突的主键值, update teacher set t_id=0 where t_name=’韩B’; (2)然后再设置主键自动增长...
  • huafeihuazyr
  • huafeihuazyr
  • 2016-12-08 20:32:04
  • 629

error1062 ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ for

设置主键字段为自动递增时报错 ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ f...
  • u010271717
  • u010271717
  • 2015-12-17 11:16:28
  • 1956

eclipse设置和优化

1.eclipse下的编码设置: eclipse 中使用模板新建 JSP,xhtml等 文件时,默认的编码为:ISO-8859-1。 ISO-8859-1 编码对于中文的显示是不支持的,如果...
  • atvhghnhtb
  • atvhghnhtb
  • 2015-11-02 19:40:44
  • 909

MySQL中修改主字段属性为auto_increment

使用MySQL Query Browser中可以很方便的实现,使用命令行的话可以使用alter  table 表名 modify column来实现。 ALTER TABLE `c`.`a` MOD...
  • jubincn
  • jubincn
  • 2012-04-06 15:31:00
  • 10402

ALTER TABLE tbl AUTO_INCREMENT = 100;

 ALTER TABLE tbl AUTO_INCREMENT = 100;
  • wangschang
  • wangschang
  • 2007-07-27 13:55:00
  • 651

ERROR 1062 (23000) at line 1: Duplicate entry '1332883220' for key 'group_key'

1.问题背景我有一个数据表,记录一个QQ号加好友的活跃天数、加好友次数、加好友的toUin数等信息。数据表的建表语句如下: echo "drop table if exists uinPortrait...
  • K346K346
  • K346K346
  • 2017-07-17 20:00:07
  • 1426

ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1'

测试环境 1.MYSQL版本 +------------+ | version() | +------------+ | 5.7.18-log | +------------+ 2.建表语句 my...
  • Evils798
  • Evils798
  • 2017-08-22 11:31:49
  • 249

mysql修改主键自增长时报错

用Navicat尝试修改已有记录的mysql数据表的主键为自动增长时,报出以下错误 ALTER TABLE causes auto_increment resequencing, resulting...
  • Hu_wen
  • Hu_wen
  • 2017-08-20 10:52:05
  • 359

RDS 在线DDL诡异报错ERROR 1062 (23000): Duplicate entry

RDS上执行报错如下:MySQL [ad_billing]> ALTER TABLE ad_spending ADD COLUMN impr bigint(20) NOT NULL DEFAULT 0...
  • mchdba
  • mchdba
  • 2017-08-04 21:17:33
  • 1147
    个人资料
    持之以恒
    等级:
    访问量: 85万+
    积分: 9309
    排名: 2480
    简介
    此博客为笔者的DT工作记录,欢迎一起交流学习工作中的点滴,若博客文章观点存在原理的错误、纰漏,笔者非常欢迎各位不保留地指出
    最新评论