0

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

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 是主键字段

表定义

我已经为数据库条目编写了 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();
4

3 回答 3

3

读这个

或者

根据您的 sanpshot,您已经在主键中设置了 result_id

但我认为你没有设置是 auto_increment

请使用 auto_increment 设置主键

于 2012-07-29T17:45:21.960 回答
0

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

于 2015-04-19T01:48:42.960 回答
0

确保它是 (( AUTO_INCREMENT ))

于 2015-05-05T15:31:16.987 回答