首先按照网上的帖子,在my.ini的[MySqlD]下添加了一行init_connect='SET autocommit=0'。然后重启服务,select @@autocommit;结果为1,设置失败。后来直接运行set global init_connect="set autocommit=0"; 后运行select @@autocommit;结果为1,设置又失败。最后百度出一篇文章,里面是直接set autocommit=0;后运行select @@autocommit;结果为0,设置成功,心情非常激动,重启了一下mysql服务,select @@autocommit;结果又变成1,设置又失败。
所以在这里请教各位达人,这玩艺该怎么玩啊?
还有,如果设置成功了,以后我的insert,update,delete语句后是不是都应该加一个commit了?
在这里先谢谢各位了
所以在这里请教各位达人,这玩艺该怎么玩啊?
还有,如果设置成功了,以后我的insert,update,delete语句后是不是都应该加一个commit了?
在这里先谢谢各位了
解决方案 »
- 【求救】误删MySql数据库中一个表中的表数据,如何恢复?
- “Truncated incorrect DOUBLE value” 怎么解决?
- 如何监控mysql表记录变化
- 高分请教: Mysql 只查询单词
- 我在C++中包含mysql.h头文件,编译时却找不到my_socket类型,是怎以回事啊?
- 请教优化查询方法.谢谢了
- 急啊~300分问这个问题了postgressql的
- 急死了,请高手指教
- 【内存占用】MySQL占用的内存非常高,开始使用SWAP空间
- 索引问题:a=xxx and b=xxx and id<xxx
- 如果将多个查询结果保存到同一个字段里?
- 急!Mysql 中按成绩降序排名 取名次(每个人的名次都要有)
init_connect='SET AUTOCOMMIT=0'
这玩艺我真心加了。不管用啊[mysqld]]
innodb-file-per-table=1init_connect='SET AUTOCOMMIT=0'
取消掉了登录用户的SUPER权限,运行set global init_connect="set autocommit=0"; 后运行select @@autocommit;结果为1,设置失败。又运行set autocommit=0;后运行select @@autocommit;结果为0,设置成功,重启mysql服务,select @@autocommit;结果又变成1,设置失败。
还是不行啊。不过话说我直接去改my.ini,是不是跟登陆用户又没有SUPER权限关系不大啊
终于设置好了。谢了英雄~~~。话说这个SUPER权限用不用加回去啊这个权限是干嘛的啊,KILL进程的??
还有一个刚发生的问题得请教一下。改好了一台机器,SELECT @@autocommit;结果为0。然后我再另外一台机器上连那台改好的机器,结果竟然为1。难道这个设置是跟着用户走的吗?因为我觉得既然改的是my.ini文件,怎么着也是一个全局的吧。
登录用户是同样的?去掉SUPER权限
去掉SUPER权限,以MY。INI中的设置为准
init_connect如果用户有SUPER权限,则不会执行。建议还是在应用程序中明确使用 begin transaction
[mysqld]
init_connect='SET autocommit=0'Note that the content of init_connect is not executed for users that have the SUPER privilege. This is done so that an erroneous value for init_connect does not prevent all clients from connecting. For example, the value might contain a statement that has a syntax error, thus causing client connections to fail. [color=#FF0000]Not executing init_connect for users that have the SUPER privilege enables them to open a connection and fix the init_connect value
[/color]
版主好。或者说如果应用程序中我明确的使用了Begin Transaction.我是不是可以不用设置这个东西??
平常有查询\更新都是需要得到最新的数据, 根本不需要启动一个事务,除非有特定状况才需要开启事务, 再手工用start transaction ... commit /rollback.用2个开关会比1个开关来得复杂, 有时候会误导.
所以postgresql数据库已经取消服务端的autocommit设定, 统一由start transaction /commit/rollback来控制事务.我想Mysql也不提倡使用这个命令.
一般都是在应用程序框架(如连接池的库)中设置autocommit是否为ON/OFF, 说白了,就是得到数据库连接以后,显示的调用一次set autocommit on/off (or =1 / =0)