只有連接到MySQL的連接打開時,無法生成鎖定超時或死鎖。
但是您可以在MySQL Workbench中兩次打開相同的連接配置文件。您可以打開兩個(或更多)選項卡,並且每個都有自己的連接。然後,您可以在每個選項卡中啓動事務並嘗試鎖定超時和死鎖。
我證明了這一點通過創建一個表test.emp1
:
CREATE TABLE `emp1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text,
`date` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO `emp1` SET `name`='me', `date`=CURRENT_DATE();
INSERT INTO `emp1` SET `name`='you', `date`=CURRENT_DATE();
然後我開了兩個標籤,以便在工作臺我的本地MySQL實例。
在標籤中選擇一個,我跑:
begin;
update emp1 set name='me2' where id=1;
select sleep(10);
update emp1 set name='you2' where id=2;
在第二個選項卡,我跑:在第一個選項卡,然後在睡眠(10)完成之前
begin;
update emp1 set name='you2' where id=2;
select sleep(10);
update emp1 set name='me2' where id=1;
點擊執行,點擊在第二個選項卡中執行。
![enter image description here](https://i.stack.imgur.com/6qDsS.png)
瞧!第二個選項卡上的死鎖。第一個選項卡上的事務成功。
就我個人而言,我覺得用終端窗口做這個更好,因爲我可以並排排列它們,而不是一次一個查看標籤。
謝謝你的幫助!我會試試看看它是否有效。 –
@SmilodonFatalis我很樂意提供幫助。提醒一下,堆棧溢出習慣性地給出幫助你的答案的贊成,並檢查最有幫助的答案的「接受」複選標記。 –
我確實讓你高興,但我的聲望不到15。因此,無法公開看待upvote。 –