我在 Rails 模型中有以下代码:
self.with_lock do
# Lots of code
end
这会生成一个 SELECT FOR UPDATE 查询。
我意识到它在我的生产环境中工作。在查看了mysql手册后,我发现了以下信息:
Locking of rows for update using SELECT FOR UPDATE only applies when autocommit is disabled
正如预期的那样,自动提交在我的生产环境中是开启的。
我有什么选择?
我无法禁用自动提交,因为同一服务器中的 PHP 应用程序依赖于它。我还需要锁定此代码,因为它会导致并发连接出现问题。
我找不到任何宝石或可以帮助我的东西。就像锁定临时文件夹中的文件一样。我需要自己编码吗?