关于mysql自增列的问题:Duplicate entry '0' for key 'PRIMARY'

时间:2021-11-05 00:13:51
 ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我已经对自己建的所有表都设置引擎和参数了,为什么有的表在INSERT的时候会报Duplicate entry '0' for key 'PRIMARY'错误而有的表就会自增呢

9 个解决方案

#1


这个错误应该是插入数据的时候,表中出现了相同的主键把

#2


引用 楼主 hunterdahe 的回复:
 ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我已经对自己建的所有表都设置引擎和参数了,为什么有的表在INSERT的时候会报Duplicate entry '0' for key 'PRIMARY'错误而有的表就会自增呢

对啊,但是我INSERT的时候估计没指定自增列,直接插入的其他字段,其实 AUTO_INCREMENT=1我已经设置自增列从1开始了,但是第一次INSERT的时候自增列却是0,再INSERT一次就报错了,而且报的就是这个错,不知道什么原因

#3


`ID` int(11) NOT NULL auto_increment, PRIMARY KEY  (`ID`)

#4


建议删除整张表,重新创建,参照脚本如下 :


CREATE TABLE IF NOT EXISTS isa_chxx_ext (
  ext_id int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID 主键 自动增长',
  ch_id int(11) NOT NULL COMMENT '储户ID 外键',
  zhbh varchar(20) NOT NULL COMMENT '账号',
  ext1 varchar(20) DEFAULT NULL COMMENT '扩展属性1',
  ext2 varchar(20) DEFAULT NULL COMMENT '扩展属性2',
  ext3 varchar(20) DEFAULT NULL COMMENT '扩展属性3',
  PRIMARY KEY (ext_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='储户信息扩展信息表' AUTO_INCREMENT=1 ;


#5


你是如何插入数据的?

#6


引用 4 楼 JenMinZhang 的回复:
建议删除整张表,重新创建,参照脚本如下 :


CREATE TABLE IF NOT EXISTS isa_chxx_ext (
  ext_id int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID 主键 自动增长',
  ch_id int(11) NOT NULL COMMENT '储户ID 外键',
  zhbh varchar(20) NOT NULL COMMENT '账号',
  ext1 varchar(20) DEFAULT NULL COMMENT '扩展属性1',
  ext2 varchar(20) DEFAULT NULL COMMENT '扩展属性2',
  ext3 varchar(20) DEFAULT NULL COMMENT '扩展属性3',
  PRIMARY KEY (ext_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='储户信息扩展信息表' AUTO_INCREMENT=1 ;



 ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;我的建表参数是这个啊

#7


引用 5 楼 ACMAIN_CHM 的回复:
你是如何插入数据的?

INSERT INTO CONNECT_PARAMETER 
(IP,PORT,USER_NAME,USER_PASSWORD,SNMP_COMMUNITY,SNMP_VERSION,DB_NAME) 
VALUES 
('192.168.1.241',161,NULL,NULL,'public','v1',NULL);
我插入的语句都是这个格式写的,但是有的表就能自增,有的表就不行,第一次INSERT进去的数据ID列是0,再INSERT就报Duplicate entry '0' for key 'PRIMARY'错了

#8


你要确保你的主键是有  AUTO_INCREMENT 选项。
看清楚了,是字段,不是表。

#9


不好意思啊,查到原因了,是因为当时我自己建表的时候忘了设置自增列了,麻烦大家了  我把分平分出去吧

#1


这个错误应该是插入数据的时候,表中出现了相同的主键把

#2


引用 楼主 hunterdahe 的回复:
 ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我已经对自己建的所有表都设置引擎和参数了,为什么有的表在INSERT的时候会报Duplicate entry '0' for key 'PRIMARY'错误而有的表就会自增呢

对啊,但是我INSERT的时候估计没指定自增列,直接插入的其他字段,其实 AUTO_INCREMENT=1我已经设置自增列从1开始了,但是第一次INSERT的时候自增列却是0,再INSERT一次就报错了,而且报的就是这个错,不知道什么原因

#3


`ID` int(11) NOT NULL auto_increment, PRIMARY KEY  (`ID`)

#4


建议删除整张表,重新创建,参照脚本如下 :


CREATE TABLE IF NOT EXISTS isa_chxx_ext (
  ext_id int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID 主键 自动增长',
  ch_id int(11) NOT NULL COMMENT '储户ID 外键',
  zhbh varchar(20) NOT NULL COMMENT '账号',
  ext1 varchar(20) DEFAULT NULL COMMENT '扩展属性1',
  ext2 varchar(20) DEFAULT NULL COMMENT '扩展属性2',
  ext3 varchar(20) DEFAULT NULL COMMENT '扩展属性3',
  PRIMARY KEY (ext_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='储户信息扩展信息表' AUTO_INCREMENT=1 ;


#5


你是如何插入数据的?

#6


引用 4 楼 JenMinZhang 的回复:
建议删除整张表,重新创建,参照脚本如下 :


CREATE TABLE IF NOT EXISTS isa_chxx_ext (
  ext_id int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID 主键 自动增长',
  ch_id int(11) NOT NULL COMMENT '储户ID 外键',
  zhbh varchar(20) NOT NULL COMMENT '账号',
  ext1 varchar(20) DEFAULT NULL COMMENT '扩展属性1',
  ext2 varchar(20) DEFAULT NULL COMMENT '扩展属性2',
  ext3 varchar(20) DEFAULT NULL COMMENT '扩展属性3',
  PRIMARY KEY (ext_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='储户信息扩展信息表' AUTO_INCREMENT=1 ;



 ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;我的建表参数是这个啊

#7


引用 5 楼 ACMAIN_CHM 的回复:
你是如何插入数据的?

INSERT INTO CONNECT_PARAMETER 
(IP,PORT,USER_NAME,USER_PASSWORD,SNMP_COMMUNITY,SNMP_VERSION,DB_NAME) 
VALUES 
('192.168.1.241',161,NULL,NULL,'public','v1',NULL);
我插入的语句都是这个格式写的,但是有的表就能自增,有的表就不行,第一次INSERT进去的数据ID列是0,再INSERT就报Duplicate entry '0' for key 'PRIMARY'错了

#8


你要确保你的主键是有  AUTO_INCREMENT 选项。
看清楚了,是字段,不是表。

#9


不好意思啊,查到原因了,是因为当时我自己建表的时候忘了设置自增列了,麻烦大家了  我把分平分出去吧