我不知道如何解决这个问题,我已经转储并重新创建了数据库(根据其他地方的答案),尝试手动插入128。。。试着删除127然后再试一次。/搞不清楚。

Copied this from the query I just tried:
INSERT INTO  `bestofthebest2`.`Topics` (`topicid`, `category`, `topic`)
VALUES ('128', '', ''), (NULL ,  '',  '')
MySQL said: Documentation

#1062 - Duplicate entry '127' for key 'topicid'

最佳答案

数据类型是偶然的吗?签名的TyyIt可以容纳的最大值为127。另外,MySQL有一个相当奇怪的(在我看来)溢出行为,因为它只会舍入溢出而不是错误。正在发生的是它试图增加到128,但是溢出了,所以它变为127。既然127已经存在,它就错了。
这可以很容易地重新创建:

CREATE TABLE test ( id TINYINT AUTO_INCREMENT PRIMARY KEY );
INSERT INTO test (id) VALUES (128);
-- A select will show you a row with id = 127
INSERT INTO test (id) VALUES (128);
-- ERROR 1062 (23000): Duplicate entry '127' for key 'PRIMARY'

最简单的解决方法是使用更大的数据类型。有符号整数可以提供2^31-1个值,因此,除非您计划拥有超过20亿个主题,否则它应该可以很好地工作:
ALTER TABLE bestofthebest2 CHANGE topicid topicid INT NOT NULL;

10-07 19:10
查看更多