Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uniknąć sytuacji wyścigowej dzięki unikalnym kontrolom w Django

Standardowym sposobem NIE jest zajęcie się tym, ponieważ:

  1. Prawdopodobieństwo niepowodzenia w Twoim przypadku jest bliskie 0;
  2. Powaga awarii jest bardzo niska.

Jeśli z jakiegoś powodu musisz mieć pewność, że problem się nie pojawi, jesteś zdany na siebie.

Nie analizowałem szczegółowo sekwencji zdarzeń, ale myślę, że użycie poziomu izolacji SERIALIZABLE tak naprawdę nie pomoże, spowoduje tylko IntegrityError (lub DatabaseError ) do podniesienia w innym miejscu.

Zastępowanie Model._perform_unique_checks brzmi dla mnie jak zły pomysł, lepiej trzymaj się z dala od małpich łatania, jeśli to możliwe (i oto jest możliwe).

Jeśli chodzi o używanie blokady stołu, aby zapobiec nieprawdopodobnym błędom... Cóż, nie jestem wielkim fanem, więc tego też nie mogę polecić.

Oto ładna odpowiedź na podobne pytanie:https://stackoverflow.com/a/3523439/176186 - Zgadzam się, łapiąc IntegrityError a ponowna próba jest prawdopodobnie najłatwiejszym rozsądnym sposobem rozwiązania problemu.

EDYCJA:Znalazłem to:Symfony2 - jak naprawić błąd unikalnych ograniczeń po przesłaniu formularza? i zgadzam się z odpowiedzią @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. Jak zsynchronizować dwie tabele różnych baz danych MySQL na tej samej maszynie?

  2. Nie można połączyć się bezpośrednio z Androida do SQL Server

  3. java.lang.IllegalStateException:próba wykonania operacji na zamkniętej fabryce EntityManagerFactory

  4. Jaka jest korzyść z zerofill w MySQL?

  5. MySQL Cast jako Boolean