When a table is locked but SHOW PROCESSLIST shows nothing
The reason in my case was that one transaction is making a read-lock on a particular table leading to a &quot;Lock wait timeout exceeded&quot; because its not committed. So all other transactions are waiting to that particular tranx to do commit.
Now, why SHOW PROCESSLIST; show nothing ? In fact, it does.
you'll find it (the process) with a &quot;Sleep&quot; state and with no query shown in the info column like if it's just a regular connection to the database.
Let's check my example in the image :
In Blue, those are some very simple queries blocked (taking 120 second before a time-out) and the red one is the &quot;ghost&quot; or non-committed transaction.
To see those kind of transactions execute :
SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY
FROM INNODB_TRX

And you may kill the process kill &lt;id&gt;; in which TRX_QUERY is null to free other transactions. In my case, KILL 33267342;
Make sure to check the non-committed transaction to see if a commit; or a Rollback clause is missing in order to ovoid such issues.