当前位置: 首页 > 知识库问答 >
问题:

MySQL工作台会话看不到数据库的更新

盖晋
2023-03-14

我使用 .deb 在 Ubuntu 系统中安装了 MySQL Workbench(community-6.2.3)。

工作台会话似乎看不到其他会话(应用程序/命令行客户端)对数据库的更新(DML)。
新会话能够在其启动时看到数据库的正确状态,但之后发生的更改对它不可见。似乎工作台
会话在工作台提交后确实与数据库同步。

我得到错误代码:1412。表定义已更改,请在我尝试查询从其他会话创建的表时重试事务

非工作台会话似乎没有任何这些问题。

我这是少了个配置什么的吗

更新:

这部分是预期的行为,部分是一个错误。

我没有使用自动提交模式,在这种情况下,SELECT语句是使用第一次读取时建立的快照执行的
这是MySQL Workbench使用的REPEATABLE READ隔离级别的行为。

有没有办法改变或设置默认隔离级别的MySQL工作台会话?

在工作台中执行时:

SELECT @@Global.tx_isolation, @@tx_isolation, @@session.tx_isolation;

返回:

READ-COMMITTED, REPEATABLE-READ, REPEATABLE-READ

而不是在命令行客户端中:

READ-COMMITTED, READ-COMMITTED, READ-COMMITTED

相关:
未设置MySQL REPEATABLE-READ Workbench事务级别
MySQL Workbench和默认会话隔离级别

共有1个答案

唐运诚
2023-03-14

这是一个老问题,但我仍然有同样的错误。OP提到了另一个线程(http://bugs.mysql.com/bug.php?id=69800)中在MySQL工作台上打开的一个错误。

根据doc(https://dev . MySQL . com/doc/ref man/5.7/en/innodb-transaction-Isolation-levels . html # iso Level _ repeatable-read),默认隔离级别为REPEATABLE-READ。

这意味着数据库的快照是在事务的第一次读取时创建的。此事务的每隔一次读取将显示快照的数据。

因此,您需要结束事务(提交或回滚),以便在下次读取时获得新的快照。

在AutoCommit上设置MySQL Workbench的同事看不到可重复的读取行为。我们发现这是因为在每次SELECT之后,事务都会关闭,并创建一个新的快照。

因此,由于该错误仍未纠正,解决方法是:

  • 切换到自动提交以自动创建新快照
  • 或在每次SELECT之后提交/回滚以创建新快照
 类似资料:
  • 我使用mysql-workbench来查询我的数据库表。我还使用Java应用程序(带有< code > MySQL-connector-Java )对我的数据库进行更改。 每次java应用程序修改数据库时,我都无法使用mysql工作台看到更改。查询没有返回任何结果。 只有在重新启动MySQL连接并再次运行查询后,我才能看到更改。 我使用,,。 在 Java 应用程序中,我使用以下代码来修改数据库状

  • 我遇到了有关数据库导出的问题。首先,我必须澄清我正在使用MySQL Workbench 5.2.47。到目前为止,我遵循的过程如下: > 我按照http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/的指示创建了与MSSQL DB的连接,以便将其

  • 我正在尝试连接到mysql工作台,但遇到以下错误 错误消息无法连接到数据库服务器 用户“root”从主机到服务器的连接尝试失败(位于127.0.0.1:3306:无法打开数据库)。 请:1。检查mysql是否正在服务器127.0.0.1上运行 检查mysql是否在端口3306上运行(注意:3306是默认值,但可以更改) 检查root是否具有从您的地址连接到127.0.0.1的权限(mysql权限定

  • 我在通过log4net记录到数据库时遇到问题。 < li >用户有权插入数据库 < li >相同的insert语句在Management Studio中有效 < li>log4net确实记录到文件,但不记录到数据库 < li >连接字符串正确(在其他应用程序中相同) 获得了以下配置: 数据库中的两列是: 消息varchar(max)不为空。 级别varchar(50)不为空 谢谢

  • 我正试图从MySQL Workbench导出数据库,但在导出过程中我得到了以下信息: 正在运行:mysqldump.exe-默认值-file = " c:\ users \ user \ appdata \ local \ temp \ tmp 2h 91 wa . CNF "-user = root-host = localhost-protocol = TCP-port = 3306-defa

  • 我正在尝试转储:服务器 21:54:55恢复C:\Users\jonpr\Desktop\loja_cliente.sql 正在运行:" C:\ Program Files \ MySQL \ MySQL work bench 8.0 CE \ MySQL dump . exe "-defaults-file = " C:\ users \ jonpr \ appdata \ local \ te