Mysql 8 SELECT ... FOR UPDATE 似乎不起作用
Mysql 8 SELECT ... FOR UPDATE seems not working
环境
Mysql 8.0.25
我有一个名为 my_table 的 table 并且有一行,包含 id 3
CREATE TABLE my_table (
id bigint AUTO_INCREMENT PRIMARY KEY
);
INSERT INTO my_table(id) VALUES (3);
我做了什么
我用两个客户端连接到 mysql(一个是 pycharm,一个是终端)
(在pycharm)
SET AUTOCOMMIT = 0;
SELECT @@AUTOCOMMIT; # 0
START TRANSACTION;
SELECT * FROM my_table WHERE id = 3 FOR UPDATE;
(在终端)
SELECT * FROM my_table WHERE id = 3;
预计
如果有锁,我应该无法 select 该行。
实际发生了什么
我能够SELECT行
mysql> SELECT * FROM my_table WHERE id = 3;
+----+
| id |
+----+
| 3 |
+----+
1 row in set (0.00 sec)
获取锁的正确方法是什么?
'for update'不会屏蔽查询,但不能在终端修改。
环境
Mysql 8.0.25
我有一个名为 my_table 的 table 并且有一行,包含 id 3
CREATE TABLE my_table (
id bigint AUTO_INCREMENT PRIMARY KEY
);
INSERT INTO my_table(id) VALUES (3);
我做了什么
我用两个客户端连接到 mysql(一个是 pycharm,一个是终端)
(在pycharm)
SET AUTOCOMMIT = 0;
SELECT @@AUTOCOMMIT; # 0
START TRANSACTION;
SELECT * FROM my_table WHERE id = 3 FOR UPDATE;
(在终端)
SELECT * FROM my_table WHERE id = 3;
预计
如果有锁,我应该无法 select 该行。
实际发生了什么
我能够SELECT行
mysql> SELECT * FROM my_table WHERE id = 3;
+----+
| id |
+----+
| 3 |
+----+
1 row in set (0.00 sec)
获取锁的正确方法是什么?
'for update'不会屏蔽查询,但不能在终端修改。