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

PDO ::commit () thành công hay thất bại

Phần quan trọng là đặt PDO ở chế độ ngoại lệ, trong khi việc try-catch chỉ để thực hiện khôi phục là không cần thiết. Do đó, mã của bạn vẫn ổn, không cần thay đổi nó nếu tất cả những gì bạn muốn là khôi phục khi thất bại, miễn là bạn có dòng này ở đâu đó:

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 

Trong trường hợp không thành công, tập lệnh sẽ bị chấm dứt, kết nối bị đóng và mysql sẽ sẵn lòng khôi phục giao dịch cho bạn.

Trong trường hợp bạn vẫn muốn khôi phục theo cách thủ công, bạn nên thực hiện đúng cách, không phải như đã nói trong các câu trả lời khác. Đảm bảo rằng

  • bạn đang bắt Exception , không phải PDOException , vì nó không quan trọng ngoại lệ cụ thể nào đã hủy bỏ quá trình thực thi
  • bạn đang ném lại một ngoại lệ sau khi khôi phục, để được thông báo về sự cố
  • cũng là công cụ bảng hỗ trợ các giao dịch (tức là đối với Mysql, nó phải là InnoDB, không phải MyISAM).

Danh sách kiểm tra này được lấy từ bài viết của tôi mà bạn có thể thấy hữu ích ở khía cạnh này hoặc nhiều khía cạnh khác.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận động tên cột theo Giá trị hàng cụ thể

  2. Đưa cơ sở dữ liệu nhúng mysql vào tệp văn bản SQL

  3. Hibernate, cách lập mô hình mối quan hệ này

  4. Laravel LeftJoin ở đâu

  5. Làm cách nào để khắc phục lỗi InnoDB khóa tên bảng khỏi quá trình tạo (errno:-1) trên AWS RDS?