Вы не предоставляете достаточно информации, чтобы ответить на ваш вопрос.
Как правило, в случае InnoDB при возникновении ошибки посмотрите на вывод команды SHOW ENGINE INNODB STATUS.Вы хотите запустить это в клиенте командной строки и завершить команду \ G (обратный слеш в верхнем регистре G), чтобы сделать вывод читабельным.
В вашем случае соответствующая информация будет находиться в верхней частиПОКАЗАТЬ вывод INNODB STATUS, где говорится что-то вроде
------------------------
LATEST DETECTED DEADLOCK
------------------------
100720 14:27:32
*** (1) TRANSACTION:
TRANSACTION 3 572739397, ACTIVE 2 sec, process no 3057, OS thread id 1362831680 starting index read
mysql tables in use 1, locked 1
LOCK WAIT 5 lock struct(s), heap size 1216, 3 row lock(s)
MySQL thread id 37496388, query id 1645924019 host 10.147.209.20 db Updating
update t set aid='4921978' where id in (302885,303582,303907,303911)
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 36004 page no 147 n bits 216 index `PRIMARY` of table `db`.`t` trx id 3 572739397 lock_mode X locks rec but not gap waiting
Record lock, heap no 43 PHYSICAL RECORD: n_fields 19; compact format; info bits 0
. Здесь перечислены соответствующие имена таблиц и индексов, а также соответствующие операторы.С этой информацией ваша проблема становится отлаживаемой.
См. Также http://www.mysqlperformanceblog.com/2006/07/17/show-innodb-status-walk-through/ для получения дополнительной информации.
Если это случается чаще, взгляните на http://freshmeat.net/projects/innotop, "Dэкран (индикация тупика).