我正在执行以下查询,以查找我的临时表是否被锁定。
show open tables where in_use > 0 and table = 'temp'
但是它会抛出以下错误:
语法错误,附近的'table = 'temp''。
我已经搜索过了,但无法获得正确的语法。请问有人能帮忙吗?
我正在执行以下查询,以查找我的临时表是否被锁定。
show open tables where in_use > 0 and table = 'temp'
方法1:只需执行show processlist;或show full processlist;命令,检查processlist中是否有任何查询/表显示为被锁定。
注意:从超级用户检查服务器上所有正在运行的进程。
方法2:执行show engine innodb status;,就可以在这里检查锁定情况...
方法3:在mysql 5.6及以上版本中,您也可以在information_schema数据库中检查它。
注意:如果您使用任何gui工具,如mysqladministrator,则可以在其中检查所有正在运行的进程,并轻松找到是否有任何表被锁定....
更新:
由于您想通过sql查询获得此内容,因此您可以使用以下查询-
对于所有被锁定的表-
SHOW OPEN TABLES WHERE in_use>0;
查看特定的表 -
SHOW OPEN TABLES WHERE in_use>0 AND `Table`='your_table_name';
Table
='x';然后尝试锁定表x,结果抛出了java.sql.SQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction对此有什么想法吗? - Pratik