Mysql

MariaDB 或 MySQL @@SESSION.tx_read_only 總是返回 0

  • August 27, 2020

我試圖找出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 ontx_read_only和 mysql ontransaction_read_only都將會話變數設置為目前會話值。“下一個事務訪問模式”保持隱藏狀態。

捕捉插入錯誤似乎是唯一的選擇。

引用自:https://dba.stackexchange.com/questions/274327