????1????????????2016??11??15??????????bug???????????鵵?????????????????????????????????????
????2???????????????£??????????InnoDb???????????RR[REPEATABLE]??
-- ??????test1
CREATE TABLE test1 (
id int(11) NOT NULL AUTO_INCREMENT??
name varchar(10) NOT NULL??
PRIMARY KEY (id)
);
insert into test1 values('hello');
-- ??????test2
CREATE TABLE test2 (
id int(11) NOT NULL AUTO_INCREMENT??
name varchar(10) NOT NULL??
PRIMARY KEY (id)
);
-- Transcation 1
begin;
insert into test2 select * from test1 where id = 1;
delete from test1 where id = 1;
-- Transcation 2
begin;
insert into test2 select * from test1 where id = 1;
????3????????????

????Mysql ???????
????Deadlock occurs here because client A needs an X lock to delete the row. However?? that lock request cannot be granted because client B already has a request for an X lock and is waiting for client A to release its S lock. Nor can the S lock held by A be upgraded to an X lock because of the prior request by B for an X lock. As a result?? InnoDBgenerates an error for one of the clients and releases its locks. The client returns this error??
????????????mysql?????Щ??????????????????X???????????????????????S????