Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP PDO löst keine Ausnahme bei doppelter Schlüsseleinfügung aus

Update 2018:DEVs betrachten dies nicht als Fehler, sondern als beabsichtigtes Verhalten. PHP-Benutzer müssen also damit leben, Bericht ist für zukünftige Fragen geschlossen ...

Dies wurde oft als Fehler mit PDO gemeldet :https://bugs.php.net/bug.php?id=61613

Es wird nur eine Ausnahme ausgelöst, wenn FIRST Anweisung ist ungültig. Wenn die erste Anweisung reibungslos läuft, erhalten Sie keinen Fehler - Und Ihre erste Anweisung ist gültig:

INSERT INTO `a` (`b`, `c`) VALUES
  (1, 1),
  (2, 2),
  (3, 2);

als Workaround - oder laut Benutzer gelöscht Der richtige Weg, es zu tun - Sie müssen die Rowsets einzeln verarbeiten (aus den Kommentaren der Fehlerberichte):

$pdo->beginTransaction();
try {
    $statement = $pdo->prepare($sql);
    $statement->execute();
    while ($statement->nextRowset()) {/* https://bugs.php.net/bug.php?id=61613 */};
    $pdo->commit();
} catch (\PDOException $e) {
    $pdo->rollBack();
    throw $e;
}