Aktualizacja 2018:DEV nie uważają tego za błąd, ale zamierzone zachowanie. Tak więc użytkownicy PHP muszą z tym żyć, raport jest zamknięty na wszelkie przyszłe pytania...
Często zgłaszano to jako błąd w PDO
:https://bugs.php.net/bug.php?id=61613
Zgłosi wyjątek tylko wtedy, gdy PIERWSZY Oświadczenie jest nieważne. Jeśli pierwsza instrukcja działa gładko, nie pojawi się żaden błąd — a pierwsza instrukcja jest prawidłowa:
INSERT INTO `a` (`b`, `c`) VALUES
(1, 1),
(2, 2),
(3, 2);
jako obejście - lub według użytkownik usunięty właściwy sposób na zrobienie tego - musisz przetwarzać zestawy wierszy jeden po drugim (zaczerpnięte z komentarzy do raportów o błędach):
$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;
}