我必须将autocommit
设置为false
,并且我已在my.cnf
配置文件中进行了更改。
我添加了autocommit=0
来设置globally autocommit OFF
,但在我的autocommit=0
文件中添加my.cnf
属性后,我的sql
服务器未启动。
但是当我评论这个新添加的行时,我的sql server正常启动。
我用"/etc/init.d/mysql start"
这个命令启动我的sql server。
设置autocommit false
是否有任何错误?
如果有,那么有人请告诉我如何做到这一点?
请尽快回复我。
谢谢你。答案 0 :(得分:4)
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_autocommit
要使用选项文件将变量设置为刚显示,请包含以下行:
[mysqld] init_connect='SET autocommit=0'
答案 1 :(得分:2)
全局关闭自动提交的语法
的[mysqld]
自动提交= 0
你要关闭它的地方: 根据@nanda对this post的回答,它可以通过三种方式完成。因此,如果我们要在全球范围内进行,您将在my.cnf文件中添加以上行
my.cnf的位置(很容易错过,这是我大部分时间浪费的地方) 根据{{3}}(请注意您的mysql版本,并在相应的版本中查找相同的文档)。
my.cnf文件必须在' / etc'夹。就我而言,my.cnf文件位于 /usr/local/mysql/my.cnf
这取决于您安装mysql的方式以及您的平台。所以只有当我把my.cnf复制到了 /等等 位置开始正常工作。
希望这会有所帮助。 干杯!
答案 2 :(得分:1)
我知道这是一个古老的问题,但我今天自己遇到了这个问题而且我不得不把它放在那里。
即使我已经
set autocommit = 0;
在我的所有交易中,我不允许回滚,所有更改都是自动更新的。我刚刚得到警告:一些非事务性更改的表无法回滚。 设置
init_connect='SET autocommit=0'
(如上面提到的@juangiordana,引用MySQL官方文档)也没有解决我的问题。
所以做一个
SHOW TABLE STATUS LIKE 'some_table_name_here';
您可以找到创建表格的引擎。事情就是这样。 MySQL 3.23的默认引擎是MyISAM,不支持autocommit = 0 ,因为它是non-transactional table.
现在我已切换到InnoDB,它就像一个魅力。