InnoDB禁止autocommit默认开启
DB版本:mysql5.1.48
之前以为开启innodb手工控制事务commit(默认情况下是innodb自动控制事务提交),会像其他参数设置一样,
直接在配置文件my.cnf中直接添加:
autocommit=0
但是这样添加,重启mysql生效参数过程,数据库不能正常启动服务;
错误文件中提示:no variables autocommit=0字样;故了解了下:
设置该参数生效方法:
借助init_connect参数:服务器为每个连接的客户端执行的字符串。字符串由一个或多个SQL语句组成。要想指定多个语句,用分号间隔开.
1:命令行下:
mysql>SET GLOBAL init_connect='SET autocommit=0';
2.配置文件中my.cnf
[mysqld]
init_connect='SET autocommit=0'
3.启动mysqld时带上--init_connect='SET autocommit=0'
注意:
这个有个问题,当我们以Super权限(root)登录mysqld时,show variables like '%autocommit%'查得结果:
autocommit ON,
这是因init_connect(手册中有对其解释)以Super用户登录是不被加载的,这是mysql出于安全考虑,而后用 普通用户登录,
show variables like '%autocommit%' 结果如下:
autocommit OFF
DB版本:mysql5.1.48
之前以为开启innodb手工控制事务commit(默认情况下是innodb自动控制事务提交),会像其他参数设置一样,
直接在配置文件my.cnf中直接添加:
autocommit=0
但是这样添加,重启mysql生效参数过程,数据库不能正常启动服务;
错误文件中提示:no variables autocommit=0字样;故了解了下:
设置该参数生效方法:
借助init_connect参数:服务器为每个连接的客户端执行的字符串。字符串由一个或多个SQL语句组成。要想指定多个语句,用分号间隔开.
1:命令行下:
mysql>SET GLOBAL init_connect='SET autocommit=0';
2.配置文件中my.cnf
[mysqld]
init_connect='SET autocommit=0'
3.启动mysqld时带上--init_connect='SET autocommit=0'
注意:
这个有个问题,当我们以Super权限(root)登录mysqld时,show variables like '%autocommit%'查得结果:
autocommit ON,
这是因init_connect(手册中有对其解释)以Super用户登录是不被加载的,这是mysql出于安全考虑,而后用 普通用户登录,
show variables like '%autocommit%' 结果如下:
autocommit OFF
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26855487/viewspace-776192/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26855487/viewspace-776192/