sql >> Databáze >  >> RDS >> Mysql

CannotAcquireLockException (jaro, hibernace, MySQL)

Toto je definitivní zablokování situace. To souvisí spíše s chybou MySQL než s problémem hibernace s vašimi třídami. Nejprve si zopakujme definici zablokování :

Další informace naleznete na této stránce:http://en.wikipedia.org/wiki/Deadlock

Jak tuto situaci řešíte. No, musíte si přečíst následující článek:Deadlocks v InnoDB . Obsahuje většinu informací, které potřebujete. Tento článek podrobně vysvětluje, jak sledovat a vypořádat se s uváznutím, které si musíte přečíst.

V zásadě budete muset na základě výše uvedených informací provést následující kroky:

  1. Vytvořte trasování MySQL:Sledujte všechny dotazy spuštěné na serveru MySQL.
  2. Získejte informace o trasování uváznutí
  3. Porovnejte trasování mrtvého uzamčení a trasování MySQL, abyste určili příčinu mrtvého uzamčení.

Článek o InnoDB's má také seznam nápravných opatření, takže je zde nebudu opakovat. Mějte na paměti zablokování není to fatální chyba, jen ji musíte zvládnout. Takže možná chytit výjimku a opakovat transakci. Také se ujistěte, že vaše dotazy generované Hibernatem jsou optimální v tom smyslu, že používají indexy kde mohou atd. Další věc, kterou můžete zkusit, je dávkování transakce v režimu Hibernate a provedení v dávce .

Jsem si jistý, že se dvěma výše uvedenými odkazy budete schopni problém vyřešit a bude pro vás cennou zkušeností, jak se s tím vypořádat sami. Pokud najdete nějakou konkrétní položku, se kterou máte problémy, přidejte ji do otázky a pojďme se s tím vypořádat.



  1. Jak přidám primární klíč auto_increment do databáze SQL Server?

  2. Úvod do dolování dat

  3. PostgreSQL:sériové vs identita

  4. json_encode vrací hodnoty dalších řádků - PHP PDO SQL HighCharts