我收到主键的重复输入错误,这是表中定义的自动增量字段。
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是主键字段
我有用于数据库输入的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();
答案 0 :(得分:3)
答案 1 :(得分:0)
首先删除id = 1的行(第一个记录),然后通过将id字段的Auto_Increment属性设置为“True”来编辑表结构(通过单击Auto_Increment复选框并保存。)
答案 2 :(得分:0)
确保它是((AUTO_INCREMENT))