MySQL錯誤: could not retrieve transation read-only status server


問題描述: java代碼在開始事務后,先做了一個查詢,再insert,此時會報: 
          java.sql.SQLException: could not retrieve transation read-only status server

解決過程: 

        查看mysql的事物隔離級別 SHOW VARIABLES LIKE '%iso%';

        返回結果: REPEATABLE-READ


        把這個改成:READ-COMMITTED 就好了: SET GLOBAL tx_isolation='READ-COMMITTED'; 

 (記得java重啟應用,要永久生效的就改my.ini配置文件


問題分析:

        當數據庫隔離級別為REPEATABLE-READ時,查詢一個select語句也算是事物的開始,而且在hibernate里會把以select語句開頭的事務標記為只讀事務,此時在這個事務里再執行insert、update、delete等DML語句就會報錯。


http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_tx_read_only






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM