mysql数据库永久设置手动提交事务(InnoDB存储引擎禁止autocommit默认开启)
mysql數據庫InnoDB存儲引擎(默認情況下是自動控制提交事務)與其他關系型數據庫在默認事務處理與其他關系型數據庫略有不同,之前已經習慣Oracle數據庫的手動提交事務的處理方式,mysql數據庫只有innoDB存儲引擎支持事務處理操作。
? ? ?現在設置mysql數據庫也是手動提交事務。方法有兩種:①臨時生效(只對當前客戶端有效),②永久生效
①臨時生效(只對當前客戶端有效)
set @@autocommit=0 (0為關閉狀態,1為開啟狀態)?
如下圖命令行所示:此方式只對本次客戶端有效,關閉后自動恢復自動提交事務狀態。
通過第三方客戶端也可以同時達到此效果:
?
②永久生效(通過修改配置文件參數設置)
一、在Linux系統中:
? ? 通過修改配置文件my.cnf文件,通過vim編輯my.cnf文件,在[mysqld](服務器選項下)添加:
? ? autocommit=0
? ? 保存,然后重啟mysql服務即可生效。
二、在Windows系統中:但是在my.ini文件添加autocommit=0,重啟mysql生效參數過程,數據庫不能正常啟動服務;
如下圖所示:命令行啟動提示:錯誤文件中提示:no variables autocommit=0(MySQL server 5.1版本,但是安裝了MySQL server 5.6版本后直接使用autocommit=0即可使用,猜測可能是MySQL高版本(MySQL server5.5版本完美使用了原生的innoDB存儲引擎)對Windows系統支持了此參數)
Windows系統中(MySQL server5.1版本)設置該參數生效方法:
需要借助init_connect參數:服務器為每個連接的客戶端執行的字符串。字符串由一個或多個SQL語句組成。要想指定多個語句,用分號間隔開.
通過修改配置文件my.ini文件,編輯my.ini文件,在[mysqld](服務器選項下)添加:
?init_connect='SET AUTOCOMMIT=0'
?保存,然后重啟mysql服務即可生效。
或者使用下列方法也可以達到:
1、命令行下:
mysql>SET GLOBAL init_connect='SET autocommit=0';
2、啟動mysqld時帶上--init_connect='SET autocommit=0'
Windows系統中(MySQL server5.1版本)當我們以Super權限(root)登錄mysql數據庫服務時,show variables like '%autocommit%'查得結果還是:
autocommit ?ON,
這是因init_connect(手冊中有對其解釋)以Super用戶登錄是不被加載的,這是mysql出于安全考慮,而后用普通用戶登錄,
show variables like '%autocommit%' 顯示的結果如下:
autocommit OFF
來源:https://blog.csdn.net/xiaoyi23000/article/details/51690601
總結
以上是生活随笔為你收集整理的mysql数据库永久设置手动提交事务(InnoDB存储引擎禁止autocommit默认开启)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自建房外墙用什么材料好
- 下一篇: 没有窗帘对睡眠有影响吗 打算不装窗帘可以