Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP PDO không đưa ra ngoại lệ khi chèn khóa trùng lặp

Cập nhật năm 2018:DEV không coi đây là lỗi mà là hành vi có chủ đích. Vì vậy, Người dùng PHP phải sống chung với điều đó, Báo cáo sẽ bị đóng nếu có bất kỳ câu hỏi nào trong tương lai ...

Điều này thường được báo cáo là lỗi với PDO : https://bugs.php.net/bug.php?id=61613

Nó sẽ chỉ ném ra một ngoại lệ nếu FIRST Tuyên bố không hợp lệ. Nếu câu lệnh đầu tiên chạy trơn tru, bạn sẽ không gặp bất kỳ lỗi nào - Và câu lệnh đầu tiên của bạn hợp lệ:

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

như một giải pháp thay thế - hoặc theo người dùng đã xóa cách thực hiện đúng - bạn cần xử lý từng bộ hàng một (lấy từ nhận xét báo cáo lỗi):

$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. Laravel:nhận một giá trị duy nhất từ ​​một truy vấn MySQL

  2. MySQL; Loại dữ liệu tốt nhất cho số lượng lớn

  3. MySQL LEFT JOIN kết quả trùng lặp

  4. Nhận nội dung của tệp docx được lưu trong mysql dabase dưới dạng loại blob trong php

  5. Lỗi khi cài đặt MySQL-python với cài đặt pip trong OSX, virtualenv