我在 2 个访问 MySQL 数据库的应用程序中使用 UniDAC (Devart)。在一个应用程序进行一些繁重的更新更新操作期间,有时我会在另一个应用程序中收到错误“#40001 Deadlock found when trying to get lock; try restarting transaction”。在阅读了 MySQL 处理此问题的技巧后,他们说要重试事务。我的问题是知道在 Delphi 中执行此操作的最佳方法。我正在这样做:
transaction_completed_ok:= False;
repeat
try
my_db.StartTransaction;
(... do the inserts)
my_db.Commit;
transaction_completed_ok:= True;
except
my_db.Rollback;
Sleep(1000);
end;
until transaction_completed_ok;
对两个应用程序上的每笔交易都这样做是解决问题的有效方法吗?谁能分享一个最好的方法?欢迎任何帮助。