SQLSTATE [23000]:违反完整性约束:1062键“ PRIMARY”的条目“ 2”重复

时间:2018-08-15 16:46:50

标签: mysql duplicates key

致敬!我在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”重复

它不适用于所有条目,仅适用于第一个插入的条目...请帮助我解决此问题。如何更新主键?

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, …

您需要更新每列的键。

您可以从以下链接中引用此问题,希望它可以解决该问题:

  1. On Duplicate Key Update same as insert

  2. https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html