主键的重复输入错误是自动增量?

时间:2012-07-29 17:41:49

标签: php mysql pdo

我收到主键的重复输入错误,这是表中定义的自动增量字段。

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: 
Integrity constraint violation: 1062 Duplicate entry '0' for key 1' in

我试图在几乎同一时间向表中添加一个条目。这可能是可能的原因,但我不确定。

实际上在场景后面运行了多个ajax调用,他们有时会尝试在同一时间用同一个主键添加表中的条目。

我想这是sql引擎自动生成相同主键的问题。

Mysql表类型:MyISAM。

可以采取哪些措施来解决这个问题?

表定义:result_id是主键字段

Table defintion

我有用于数据库输入的writren PDO包装器,虽然我使用去年的这个数据绑定对象并没有发现问题。根据评论中的要求附加部分内容。

注意:ID(主键)不是INSERT语句的一部分。

$valueList = "";
$query     = 'INSERT INTO ' . $this->tableName . ' (';


foreach ($this->relationMap as $key => $value) {
    eval('$actualVal = &$this->' . $value . ';');

    if (isset($actualVal)) {
        if (array_key_exists($value, $this->modifiedRelations)) {
            $query .= $key . ', ';
            $valueList .= ":$value, ";
        }
    }
}


$query = substr($query, 0, strlen($query) - 2);

$valueList = substr($valueList, 0, strlen($valueList) - 2);
$query .= ") VALUES (";
$query .= $valueList;
$query .= ")";
//prepare and execute codes - here
$this->ID = $this->objPDO->lastInsertId();

3 个答案:

答案 0 :(得分:3)

Read this

或者

您已根据sanpshot

在主键中设置了result_id

但我认为你没有设置是auto_increment

请使用auto_increment

设置主键

答案 1 :(得分:0)

首先删除id = 1的行(第一个记录),然后通过将id字段的Auto_Increment属性设置为“True”来编辑表结构(通过单击Auto_Increment复选框并保存。)

答案 2 :(得分:0)

确保它是((AUTO_INCREMENT))