sql >> Databáze >  >> RDS >> Mysql

PHP PDO nevyvolá výjimku při vložení duplicitního klíče

Aktualizace z roku 2018:DEV to nepovažují za chybu, ale za zamýšlené chování. Uživatelé PHP s tím tedy musí žít, Report je uzavřen pro jakékoli budoucí dotazy...

Toto bylo často hlášeno jako chyba s PDO :https://bugs.php.net/bug.php?id=61613

Výjimku vyvolá pouze v případě, že PRVNÍ Výpis je neplatný. Pokud první příkaz proběhne hladce, neobjeví se žádná chyba – A váš první příkaz je platný:

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

jako řešení - nebo podle uživatelem smazáno správný způsob, jak to udělat - musíte zpracovat sady řádků jeden po druhém (převzato z komentářů k hlášením o chybách):

$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. Získávání ORA-03115:Nepodporovaný datový typ sítě nebo chyba reprezentace při načítání pole varchar z anonymního pl/sql

  2. Po odstranění záznamů na SQL Serveru resetujte seed identity

  3. Jak se dotazuji na pole obsahující daný text v MySQL?

  4. Seskupit řádky pomocí seskupení podle klauzule v MySQL