Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP PDO nie zgłasza wyjątku przy wstawianiu zduplikowanego klucza

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dostęp do bazy danych MySql z pliku PHP na lokalnym hoście

  2. Zaktualizuj tabelę MySQL z pliku lokalnego

  3. Jak utworzyć bezpieczną kwerendę do wykonywania zbiorczego wstawiania w MySQL przy użyciu MySQLCommand w C# bez użycia przechowywanej procedury?

  4. MySQL Dołącz do tej samej tabeli

  5. Jak sortować wiersze tabeli HTML, które są wywoływane z MySQL