Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP PDO tidak membuang pengecualian pada penyisipan kunci duplikat

Pembaruan 2018:DEV tidak menganggap ini sebagai bug, tetapi perilaku yang dimaksudkan. Jadi, Pengguna PHP harus menerimanya, Laporan ditutup untuk pertanyaan di masa mendatang...

Ini sering dilaporkan sebagai bug dengan PDO :https://bugs.php.net/bug.php?id=61613

Itu hanya akan mengeluarkan pengecualian jika PERTAMA Pernyataan tidak valid. Jika pernyataan pertama berjalan lancar, Anda tidak akan mendapatkan kesalahan - Dan pernyataan pertama Anda valid:

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

sebagai solusi - atau menurut pengguna dihapus cara melakukannya yang benar - Anda perlu memproses rowsets satu per satu (diambil dari komentar laporan bug):

$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. beberapa permintaan ke node express masalah sinkronisasi mysql

  2. Cara Mendapatkan Tahun dan Bulan Dari Tanggal di MySQL

  3. Peningkatan otomatis MySQL per nilai berbeda yang dimasukkan di kolom lain?

  4. Aplikasi web [] tampaknya telah memulai thread bernama [Abandoned connection cleanup thread] com.mysql.jdbc.AbandonedConnectionCleanupThread

  5. Tidak dapat memilih 'OK' di mysql-apt-config [Ubuntu 14.04]