【问题标题】:MySQL Auto increment not incrementingMySQL自动增量不递增
【发布时间】:2014-05-05 00:07:47
【问题描述】:

我创建了一个包含 3 列的表:postID、userID 和 comment。

我将 postID 作为主键,每次向表中添加新行时,我都会尝试自动递增。

INSERT INTO CommentTable (postID, userID, comment) VALUES (DEFAULT, "test", "test")

当我运行这个查询时,它会运行一次,但是当我再次运行它时,我得到“1062 - Duplicate entry '0' for key 'PRIMARY'”。

如何正确设置自增主键?

这是表结构:

DROP TABLE IF EXISTS `CommentTable`;
CREATE TABLE `CommentTable` (
  `postID` int(10) NOT NULL,
  `userID` varchar(10) NOT NULL,
  `comment` varchar(1000) DEFAULT NULL,
  PRIMARY KEY (`commentID`)
) 

【问题讨论】:

  • 此时表定义通常很有用
  • 我们可以看看你的表创建语句吗?
  • @user9993 编辑了答案。您必须在字段中设置AUTO_INCREMENT

标签: mysql sql


【解决方案1】:

不用输入字段postID

INSERT INTO CommentTable (userID, comment) VALUES ("test", "test")

将您的表格编辑为:

CREATE TABLE `CommentTable` (
  `postID` int(10) NOT NULL AUTO_INCREMENT,
  `userID` varchar(10) NOT NULL,
  `comment` varchar(1000) DEFAULT NULL,
  PRIMARY KEY (`postID`)
) 

【讨论】:

  • 是的,首先不要插入PK I。自动增量与默认值不同。
  • 完美,谢谢。我选择了复选框以使其与我正在使用的设计器自动递增,但我猜它实际上并没有为它生成 SQL 来查看我发布的内容。您的代码有效,谢谢。
【解决方案2】:

最近我遇到了同样的问题,即未保存自动增量。每次我试图保存它都失败了。我的问题是我有一条记录的值是 0 而不是 1,所以我将该记录值更新为非零值,然后尝试保存自动增量,它起作用了。

主索引字段中的零 (0) 值导致 ALTER 表名失败。一旦它起作用了,我将值恢复为 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多