我使用MySQL在Ubuntu系统中安装了.deb工作台(Community6.2.3)。
工作台会话似乎看不到其他会话(应用程序/命令行客户端)对数据库的更新(DML)。
新会话能够在数据库开始时看到数据库的正确状态,但随后发生的更改对它是不可见的。
在工作台中提交之后,工作台会话似乎确实与db同步。
当我试图查询从不同会话创建的表时,我会得到Error Code: 1412. Table definition has changed, please retry transaction。
非工作台会话似乎没有任何这些问题。
我是不是漏掉了配置什么的?
更新:
这在一定程度上是预期的行为和部分是一只小虫。
我是不使用自动提交模式,在这种情况下,使用在第一次读取时建立的快照来执行SELECT语句。
这是MySQL工作台使用的可重复读取隔离级别的行为。
是否有方法更改或设置MySQL工作台会话的默认隔离级别?
在工作台中执行时:
SELECT @@Global.tx_isolation, @@tx_isolation, @@session.tx_isolation;返回:
READ-COMMITTED, REPEATABLE-READ, REPEATABLE-READ相对于命令行客户端:
READ-COMMITTED, READ-COMMITTED, READ-COMMITTED相关信息:
发布于 2016-11-29 11:01:10
这是个老问题,但我还是有同样的问题。OP提到了在MySQL工作台上在另一个线程(http://bugs.mysql.com/bug.php?id=69800)中打开的一个bug。
根据doc (可重复读),默认的隔离级别是可重复读取的.
这意味着数据库的快照是在事务的第一次读取时生成的。此事务的其他读取将显示快照的数据。
因此,您需要结束事务(提交或回滚)以获得下一次读取的新快照。
我在AutoCommit上设置AutoCommit工作台的同事没有看到可重复读取的行为。我们发现这是因为在每次选择之后,事务将被关闭并创建一个新的快照。
因此,由于该bug仍未得到纠正,解决办法如下:
https://stackoverflow.com/questions/26208007
复制相似问题