致敬!我在Symfony中使用以下原始sql语句从现有表INTO插入具有相同结构的其他表中的大量行,该表还包含大量现有行[因为使用过的表是动态创建到运行时的,所以没有SYMFONY -ENTITY]:
$sql_insert = "INSERT INTO table1".$proid." SELECT * from ".$tablename." ON DUPLICATE KEY UPDATE table1".$proid.".id = table1".$proid.".id + 1";
仍然出现相同的错误:
SQLSTATE [23000]:违反完整性约束:1062键“ PRIMARY”的条目“ 2”重复
它不适用于所有条目,仅适用于第一个插入的条目...请帮助我解决此问题。如何更新主键?
答案 0 :(得分:0)
Symfony帮助解决了重复密钥问题,例如:
$conn = $this->getDoctrine()->getManager()->getConnection();
$sql_insert = " SELECT * from ".$tablename."";
$stmt = $conn->prepare($sql_insert);
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $item => $row) {
$dataArray1 = array(
'a' => $row['a'],
'b' => $row['b'],
...);
$conn->insert('pro'.$id.'', $dataArray1);
}
答案 1 :(得分:-2)
正确的查询是:
INSERT INTO table(column_list)
VALUES(value_list)
ON DUPLICATE KEY UPDATE column_1 = new_value_1, column_2 = new_value_2, …
您需要更新每列的键。
您可以从以下链接中引用此问题,希望它可以解决该问题: