テーブルで定義された自動インクリメントフィールドである主キーの重複エントリエラーが発生します。
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();