1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
set global innodb_lock_wait_timeout=42;
connect a,localhost,root,,;
connect b,localhost,root,,;
connection a;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
42
set innodb_lock_wait_timeout=1;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
1
connection b;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
42
set global innodb_lock_wait_timeout=347;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
42
set innodb_lock_wait_timeout=10;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
10
connect c,localhost,root,,;
connection c;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
347
disconnect c;
connection a;
SET @connection_b_id = <connection_b_id>;
create table t1(a int primary key)engine=innodb;
begin;
insert into t1 values(1),(2),(3);
connection b;
select * from t1 for update;
connection a;
commit;
connection b;
a
1
2
3
connection a;
begin;
insert into t1 values(4);
connection b;
set innodb_lock_wait_timeout=3;
select * from t1 for update;
connection a;
commit;
connection b;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
disconnect b;
connection a;
disconnect a;
connection default;
drop table t1;
set global innodb_lock_wait_timeout=<initial_timeout>;
|