我遇到了MySQL workbench 6.0 CE的问题,我将尽可能地解释它:
MySQL Workbench始终将会话变量@@tx_isolation
设置为"REPEATABLE READ"
,更改此变量的唯一方法是使用SET tx_isolation='READ-COMMITTED';
。
我想要的是,当我启动工作台时,tx_isolation
的默认会话变量是'READ-COMMITTED'
而不是'REPEATABLE-READ'
;是的,我已更改了全局变量tx_isolation
及其'READ-COMMITTED'
,但会话1未更改。
EJ:
SELECT @@Global.tx_isolation, @@tx_isolation;
分别返回'READ-COMMITTED'
,'REPEATABLE-READ'
。
注意:如果我在MySQL命令行中查询与上面相同的代码,则两个变量都设置为'READ-COMMITTED'
,这就是为什么我认为这是一个问题使用MySQL Workbench而不是服务器。
感谢您的帮助。
答案 0 :(得分:1)
这是一个老问题,但我仍然有同样的错误。
根据doc(https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html#isolevel_repeatable-read),默认隔离级别是REPEATABLE-READ。
这意味着数据库的快照是在事务的FIRST读取上进行的。此事务的每次其他读操作都将显示快照的数据。
因此,您需要结束事务(提交或回滚)以在下次读取时获取新快照。
我在AutoCommit上设置MySQL Workbench的同事看不到可重复读取的行为。我们发现它是因为在每个SELECT之后,事务被关闭并且创建了一个新的快照。
因此,由于该错误仍未得到纠正(正如Sithsu所提到的),解决方法将是: