Heim  >  Artikel  >  Datenbank  >  ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘P

ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘P

WBOY
WBOYOriginal
2016-06-07 16:41:541753Durchsuche

本着“暂时无法解决的问题都是好问题”的原则记下这个问题,给以后的闲暇留下一些思考的粮食。 问题描述: 1.在一个插入过记录,有primary key的innodb表里面清空数据(或者删除并重建表)然后重新插入数据的时候总是会提示标题所示的信息。2.重新建表的时候sh

本着“暂时无法解决的问题都是好问题”的原则记下这个问题,给以后的闲暇留下一些思考的粮食。
问题描述:
1.在一个插入过记录,有primary key的innodb表里面清空数据(或者删除并重建表)然后重新插入数据的时候总是会提示标题所示的信息。2.重新建表的时候show create table 不会显示AUTO_INCREMENT=xx,但是向里面执行插入操作就会报错,这时候再show create table的时候就发现AUTO_INCREMENT=xx.
问题场景:

mysql> drop table cluster;
Query OK, 0 rows affected (0.06 sec)
mysql> CREATE TABLE `cluster` (
    ->   `id` int(11) NOT NULL AUTO_INCREMENT,
    ->   `name` varchar(50) NOT NULL DEFAULT '' COMMENT '集群名称',
    ->   `cdr_api` varchar(255) NOT NULL DEFAULT '' COMMENT '话单接口地址',
    ->   `monitor_api` varchar(255) NOT NULL DEFAULT '' COMMENT '监控接口地址',
    ->   `control_api` varchar(255) NOT NULL DEFAULT '' COMMENT '控制接口地址',
    ->   `is_public` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否为共有集群1是0否',
    ->   `status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '集群是否有效1是0否',
    ->   PRIMARY KEY (`id`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='集群管理表';
Query OK, 0 rows affected (0.23 sec)
mysql> show create table cluster;
+---------+---------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                              |
+---------+---------------------------------------------------------------------------+
| cluster | CREATE TABLE `cluster` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '集群名称',
  `cdr_api` varchar(255) NOT NULL DEFAULT '' COMMENT '话单接口地址',
  `monitor_api` varchar(255) NOT NULL DEFAULT '' COMMENT '监控接口地址',
  `control_api` varchar(255) NOT NULL DEFAULT '' COMMENT '控制接口地址',
  `is_public` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否为共有集群1是0否',
  `status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '集群是否有效1是0否',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='集群管理表' |
+---------+-------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> insert into cluster(`id`,`name`,`cdr_api`,`monitor_api`,`control_api`,`is_public`,`status`) select    `id`,`name`,`daddr`,`monitorurl`,`opensipsurl`,`type`,1 from trunking.trunking_manager;
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> show create table cluster;
+---------+--------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                             |
+---------+--------------------------------------------------------------------------+
| cluster | CREATE TABLE `cluster` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '集群名称',
  `cdr_api` varchar(255) NOT NULL DEFAULT '' COMMENT '话单接口地址',
  `monitor_api` varchar(255) NOT NULL DEFAULT '' COMMENT '监控接口地址',
  `control_api` varchar(255) NOT NULL DEFAULT '' COMMENT '控制接口地址',
  `is_public` tinyint(2) NOT NULL DEFAULT '0' COMMENT '是否为共有集群1是0否',
  `status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '集群是否有效1是0否',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='集群管理表' |
+---------+---------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from cluster;
Empty set (0.00 sec)
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn