Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте. Show innodb status выдает
------------------------
LATEST DETECTED DEADLOCK
------------------------
100830 16:07:51
*** (1) TRANSACTION:
TRANSACTION 0 218681843, ACTIVE 0 sec, process no 17323, OS thread id 140295479875856 fetching rows
mysql tables in use 2, locked 2
LOCK WAIT 6 lock struct(s), heap size 1216, 5 row lock(s), undo log entries 1
MySQL thread id 8777752, query id 96759491 localhost island8 preparing
UPDATE
`stor`
SET
`count`=`count`-1
WHERE
`user_id`=80338382
AND
`item_id` IN (SELECT `item_id` FROM `item` WHERE `item_name`='bar')
AND
`count` > 0
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 0 page no 10734 n bits 512 index `PRIMARY` of table `island`.`stor` trx id 0 218681843 lock_mode X locks rec but not gap waiting
Record lock, heap no 64 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
0: len 4; hex 8002044f; asc O;; 1: len 6; hex 0000061f795f; asc y_;; 2: len 7; hex 800000385b080a; asc 8[ ;; 3: len 4; hex 84c9ddce; asc ;; 4: len 4; hex 80000248; asc H;; 5: len 4; hex 80000001; asc ;;
*** (2) TRANSACTION:
TRANSACTION 0 218681765, ACTIVE 0 sec, process no 17323, OS thread id 140293540428048 fetching rows, thread declared inside InnoDB 405
mysql tables in use 1, locked 1
425 lock struct(s), heap size 63472, 160841 row lock(s)
MySQL thread id 8777416, query id 96759414 localhost island7 updating
DELETE FROM `stor` WHERE `count`<=0
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 0 page no 10734 n bits 512 index `PRIMARY` of table `island`.`stor` trx id 0 218681765 lock_mode X
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0
0: len 8; hex 73757072656d756d; asc supremum;;
Record lock, heap no 2 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
0: len 4; hex 800203e5; asc ;; 1: len 6; hex 0000061f795f; asc y_;; 2: len 7; hex 800000385b04a6; asc 8[ ;; 3: len 4; hex 802110f4; asc ! ;; 4: len 4; hex 80000244; asc D;; 5: len 4; hex 80000001; asc ;;
Обьясните пожалуйста в чем может быть причина блокировки таблиц. Зарание всем благодарен.
Неактивен
Представьте себе веревку, вдоль которой разложены яблоки — зеленые
и красные. С двух сторон веревки начинают ползти два червяка (очень про-
жорливые). Причем первый червяк ест только зеленые, а второй отъедает
от красных яблок половинки так, что они становятся визуально зелеными.
Вот посередине они встречаются и начинают путаться — то ли это зеленое
яблоко, и его надо съесть, то ли оно было красным, но отгрызено.
У Вас классический deadlock — нужно просто повторить откаченную тран-
закцию.
Неактивен
paulus написал:
У Вас классический deadlock — нужно просто повторить откаченную тран-
закцию.
Спасибо, но Вы не могли бы поподробнее обьяснить что надо сделать. Просто мне не совсем понятно
Неактивен
У Вас есть два клиента. У одного запрос выполнился, а у второго закончился
ошибкой «Deadlock detected. Please restart the transaction». На втором клиенте
нужно заново начать транзакцию и выполнить все действия до ее завершения.
Неактивен