sql >> Database >  >> RDS >> Mysql

PHP PDO genereert geen uitzondering bij het invoegen van dubbele sleutels

Update 2018:DEV's beschouwen dit niet als een bug, maar als bedoeld gedrag. Dus PHP-gebruikers moeten daarmee leven, het rapport is gesloten voor eventuele toekomstige vragen...

Dit is vaak gemeld als een bug met PDO :https://bugs.php.net/bug.php?id=61613

Er wordt alleen een uitzondering gegenereerd als de FIRST Verklaring is ongeldig. Als de eerste verklaring soepel verloopt, krijgt u geen foutmelding - En uw eerste verklaring is geldig:

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

als tijdelijke oplossing - of volgens gebruiker verwijderd de juiste manier om het te doen - u moet de rijensets één voor één verwerken (overgenomen uit de opmerkingen over bugrapporten):

$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;
}



  1. Hoe de tabelopslag-engine van MyISAM naar InnoDB te veranderen?

  2. Laravel 5 Welsprekend:hoe krijg ik onbewerkte sql die wordt uitgevoerd? (met gebonden gegevens)

  3. Gegevenstype voor het opslaan van ip-adres in SQL Server

  4. Zoek een string door alle tabellen in SQL Server te doorzoeken