我在使用.deb的Ubuntu系統中安裝了MySQL Workbench(community-6.2.3)。MySQL Workbench會話沒有看到數據庫的更新
工作臺會話似乎沒有看到由其他會話(應用程序/命令行客戶端)完成的對數據庫的更新(DML)。
新會話能夠在其開始時看到數據庫的正確狀態,但是之後發生的更改不可見。
似乎工作臺會話在工作臺提交後與數據庫同步。
我收到Error Code: 1412. Table definition has changed, please retry transaction
,當我嘗試查詢從不同會話創建的表時。
非工作臺會話似乎沒有任何這些問題。
我是否缺少配置或其他?
更新:
這部分是預期的行爲,partly a bug。
我是not using autocommit mode,在這種情況下SELECT
語句使用第一次讀取時建立的快照執行。
這是REPEATABLE READ隔離級別的行爲,它被MySQL Workbench使用。
有沒有辦法更改或設置MySQL Workbench會話的默認隔離級別?
當工作臺執行:
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 transaction level not set
MySQL Workbench and default session isolation level
它發生在任何查詢? – Vertig0 2014-10-05 23:01:33
@ Vertig0是的,從其他會話插入/更新/刪除不會反映在工作臺中。 – Sithsu 2014-10-05 23:14:21
這似乎很像開始一個事務後預期的事情,取決於您配置的隔離級別......我們可以假設您不是故意開始一個事務嗎?發出一個'ROLLBACK;'會讓其他會話的變化可見,但問題仍然存在,如果你沒有啓動一個,你爲什麼要進行一個事務? – 2014-10-06 03:13:51