When a transaction is waiting for a resource, it will wait for the resource to become free, or stop waiting and return with the error
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
        The length of time a transaction will wait for a resource before
        “giving up” is determined by the value of the
        configuration parameter innodb_lock_wait_timeout. The default
        setting for this parameter is 50 seconds. The minimum setting is
        1 second, and values above 100,000,000 disable the timeout, so a
        transaction will wait “forever”. Following a
        timeout, the SQL statement that was executing will be rolled
        back. (In MySQL 5.0.12 and earlier, the transaction rolled
        back.) The user application may try the statement again (usually
        after waiting for a while), or rollback the entire transaction
        and restart.
      
        Before InnoDB storage engine 1.0.2, the only way to set this parameter
        was in the MySQL option file (my.cnf or
        my.ini), and changing it required shutting
        down and restarting the server. Beginning with the
        InnoDB storage engine 1.0.2, the configuration parameter
        innodb_lock_wait_timeout can be set at runtime with the
        SET GLOBAL or SET SESSION
        commands. Changing the GLOBAL setting
        requires the SUPER privilege and affects the
        operation of all clients that subsequently connect. Any client
        can change the SESSION setting for
        innodb_lock_wait_timeout, which affects only that client.
      
This is the User’s Guide for InnoDB storage engine 1.1 for MySQL 5.5, generated on 2010-04-13 (revision: 19994) .

