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

Cách tránh tình trạng cuộc đua với những lần kiểm tra duy nhất trong Django

Cách tiêu chuẩn là KHÔNG xử lý điều này, như:

  1. xác suất thất bại trong trường hợp của bạn gần bằng 0;
  2. mức độ nghiêm trọng của sự cố là rất thấp.

Nếu, vì một lý do nào đó, bạn phải chắc chắn rằng vấn đề sẽ không xảy ra, thì bạn đang tự lo liệu.

Tôi chưa phân tích chuỗi sự kiện một cách chi tiết nhưng tôi nghĩ rằng việc sử dụng mức cô lập SERIALIZABLE sẽ không thực sự hữu ích, nó sẽ chỉ gây ra IntegrityError (hoặc DatabaseError ) để được lớn lên ở một nơi khác.

Ghi đè Model._perform_unique_checks đối với tôi nghe có vẻ là một ý kiến ​​tồi, tốt hơn hết bạn nên tránh xa việc vá khỉ nếu có thể (và đây có thể).

Đối với việc sử dụng khóa bàn để tránh những lỗi không đáng có ... Chà, tôi không phải là một fan cuồng nhiệt nên tôi cũng không thể khuyến nghị điều đó.

Đây là một câu trả lời hay cho một câu hỏi tương tự: https://stackoverflow.com/a/3523439/176186 - Tôi đồng ý rằng bắt IntegrityError và thử lại có lẽ là cách dễ dàng nhất để giải quyết vấn đề.

CHỈNH SỬA:Tôi đã tìm thấy cái này: Symfony2 - làm cách nào để khôi phục khỏi lỗi ràng buộc duy nhất sau khi gửi biểu mẫu? và tôi đồng ý với câu trả lời của @ pid.



  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 thẻ tệp mp4

  2. MYSQL:Hiển thị các bản ghi đã bỏ qua sau khi TẢI THÔNG TIN DỮ LIỆU?

  3. Đếm số hàng riêng biệt cho nhiều giá trị

  4. Cách lấy tháng từ ngày trong MySQL

  5. Cách tốt nhất để kiểm tra xem một hàng có tồn tại trong bảng MySQL hay không