这是for update自己的特性,当你的where的字段是主键,则在commit之前,会一直锁住符合条件的行,不能update等。
如果where后的字段不是主键,则在commit之前,会一直锁住整张表。
你这里user_id不是主键,所以整张表都被锁住,其他人都得等着

解决方案 »

  1.   

    请问怎么查看哪一行被锁住了。有可能是应用层锁住了这条记录。或者应用层begin之后forupdate后没有commit或者rollback。
    这种情况应该怎么查看被锁住的行啊。。 
      

  2.   

    请问怎么查看哪一行被锁住了。有可能是应用层锁住了这条记录。或者应用层begin之后forupdate后没有commit或者rollback。
    这种情况应该怎么查看被锁住的行啊。。 http://dev.mysql.com/doc/refman/5.0/en/innodb-monitors.html
      

  3.   

    请问怎么查看哪一行被锁住了。有可能是应用层锁住了这条记录。或者应用层begin之后forupdate后没有commit或者rollback。
    这种情况应该怎么查看被锁住的行啊。。 http://dev.mysql.com/doc/refman/5.0/en/innodb-monitors.html
    你的回帖帮了我很大忙。。 借这次机会学了不少东西。。 还是建议以后再应用层最好不要用for update之类的东西。。