菜鸟请教各位大侠,在 ruby 2.5.0, rails 5.1.4 环境下,连 Mysql,发现事件加锁的机制和预想中的不一样,简单的例子,我在 Mysql workbench 上先加锁,如下:
start transaction;
select status from tasks where id=31 for update;
然后再 ruby 程序中执行
Task.transaction do
tasks=Task.where("id=? ",31).lock(true);
......
task.save!
end
发现 ruby 可以执行 select 并得到查询结果,预想中程序应该停在那里,等到前面 workbench 中的锁释放了,再执行 select。然而,当执行到后面 task.save! 的时候,锁住了,程序停在那里。我希望程序在 select 的时候就挂起直到另一边的锁被释放。不知是哪里出了问题,请问应该如何调整程序?万分感谢。