Mysql
MariaDB 或 MySQL @@SESSION.tx_read_only 總是返回 0
我試圖找出Java應用程序中池連接(在同一物理連接上)之間可能的“只讀”事務設置洩漏,這導致我提出一個問題“我怎樣才能找出目前事務的只讀性是?”
當我發布聲明時,我正在使用版本
10.0.28-MariaDB-wsrep
以及我所做的任何事情:5.7.31-0ubuntu0.18.04.1
SELECT @@GLOBAL.tx_read_only, @@SESSION.tx_read_only;
對於這兩個值,它始終返回 0。(我也嘗試過 MySql 上未棄用的變數,結果相同。)
我已經閱讀瞭如何為兩個數據庫啟動事務,即使
Cannot execute statement in a READ ONLY transaction.
我在應用程序中遇到困擾我的錯誤,它tx_read_only
仍然是 0。我在 IDEA SQL 控制台中嘗試了以下操作:
- 輪到自動送出
set TRANSACTION READ ONLY;
START TRANSACTION;
INSERT ...
-*原來:*在 MySQL 上沒有問題,在 MariaDB 上失敗,我明白原因,它已記錄在案。*編輯:*我試過這個小提琴和這個小提琴,第一次插入都失敗了。我之前的經驗可能是由於會話不清楚造成的。- 開始交易只讀; - 編輯:現在可能不相關。
INSERT ...
- 以Cannot execute statement in a READ ONLY transaction.
兩個數據庫結束。任何一步,
tx_read_only
總是0。可能是什麼問題?在實際嘗試之前詢問數據庫是否允許 INSERT 的正確方法是什麼?
另一個小提琴測試
因此 MariaDB on
tx_read_only
和 mysql ontransaction_read_only
都將會話變數設置為目前會話值。“下一個事務訪問模式”保持隱藏狀態。捕捉插入錯誤似乎是唯一的選擇。