Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да избегнете състезание с уникални проверки в Django

Стандартният начин е да НЕ се справяте с това, като:

  1. вероятността за неуспех във вашия случай е близка до 0;
  2. тежестта на повредата е много ниска.

Ако по някаква причина трябва да сте сигурни, че проблемът няма да се случи, вие сте сами.

Не съм анализирал подробно последователността от събития, но мисля, че използването на нивото на изолация SERIALIZABLE няма да помогне наистина, само ще причини IntegrityError (или DatabaseError ) да бъдат отгледани на друго място.

Отмяна на Model._perform_unique_checks звучи ми като лоша идея, по-добре стойте далеч от маймунски кръпки, ако е възможно (и ето го е възможно).

Що се отнася до използването на заключване на масата за предотвратяване на малко вероятни грешки... Е, аз не съм голям фен, така че не мога да препоръчам и това.

Ето един хубав отговор на подобен въпрос:https://stackoverflow.com/a/3523439/176186 - Съгласен съм, че улавя IntegrityError и повторният опит е може би най-лесният разумен начин за справяне с проблема.

РЕДАКТИРАНЕ:Намерих това:Symfony2 - как да се възстанови от уникална грешка при ограничение след подаване на формуляр? и съм съгласен с отговора на @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. MySQL PHP count(*) връща нещо странно

  2. В MySQL как да върна седмицата от месеца?

  3. JDBC, MySQL:получаване на битове в BIT(M!=1) колона

  4. класиране на записи в таблицата на mysql

  5. вмъкнете Unicode символ в бази данни