Я делаю этот тест, чтобы понять, как работает кластер Mysql NDB.Итак, у меня есть два узла sql.Подготовка Я создал следующую таблицу:
CREATE TABLE tb_id (
id bigint(20) NOT NULL AUTO_INCREMENT,
ix bigint(20) default 0,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
INSERT INTO tb_id (name, ix) VALUES
('dog', 1),('cat', 2),('penguin', 3), ('cow', 4),('tiger', 5),('fish', 6);
Я создаю 2 сеанса, каждый на своем узле, и я запускаю на обоих: set session autocommit=off;
после этого на первом сеансе, который я запускаю:
UPDATE tb_id SET ix = 2 where name="cat";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
без фиксации и запуска следующего сеанса 2:
UPDATE tb_id SET ix = 2 where name="fish";
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
Почему происходит сбой второго сеанса, поскольку я не обновляю ту же строку?