??MySQL中使用事务需要查询当前会话或者当前系统隔离级别的时候使用命令行 select @@global.tx_isolation; 会出现下列报错信息:
ERROR 1193 (HY000): Unknown system variable 'tx_isolation'
旧版 MySQL用的是 tx_isolation,新版 MySQL只需把 tx 改为 transaction 就好
查看全局隔离权限语句:
select @@global.transaction_isolation;
show variables like 'transaction_isolation';
mysql> select @@global.transaction_isolation;
+
| @@global.transaction_isolation |
+
| REPEATABLE-READ |
+
1 row in set (0.00 sec)
mysql> show variables like 'transaction_isolation';
+
| Variable_name | Value |
+
| transaction_isolation | REPEATABLE-READ |
+
1 row in set, 9 warnings (0.01 sec)
查看当前会话隔离权限
select @@transaction_isolation;
select @@session.transaction_isolation;
mysql> select @@transaction_isolation;
+
| @@transaction_isolation |
+
| REPEATABLE-READ |
+
1 row in set (0.00 sec)
mysql> select @@session.transaction_isolation;
+
| @@session.transaction_isolation |
+
| REPEATABLE-READ |
+
1 row in set (0.00 sec)
指定 global 关键字是可以修改全局的设置,修改后需要新建连接或事务才会起效
而指定 session 只修改当前连接会话的隔离级别,修改完后立即生效,再次连接后会跟回全局的设置,对其他连接/会话也不起作用
如果不指定是 global 还是 session,则本次连接当前事务的隔离级别不会被改,要到下一个(尚未启动的)新事务才起作用,下一个事务结束后,又将恢复成本次 session 中原先的设置
|