如何在全局范围内设置autocommit false

时间:2011-02-07 08:40:26

标签: mysql

我必须将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是否有任何错误?

如果有,那么有人请告诉我如何做到这一点?

请尽快回复我。

谢谢你。

3 个答案:

答案 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)

phew ..这是2015年12月,接近新的一年,我在macbook pro上安装了mysql 5.6。在尝试了以上所有选项之后,我无法让自动提交为“关闭”。默认情况下。在花了很多时间在这之后,我终于能够解决这个问题了。以为我可能会在这里分享,因为有一些事情很容易被遗漏,即使你做其他一切正确。

  1. 全局关闭自动提交的语法

    的[mysqld]

    自动提交= 0

  2. 你要关闭它的地方: 根据@nanda对this post的回答,它可以通过三种方式完成。因此,如果我们要在全球范围内进行,您将在my.cnf文件中添加以上行

  3. my.cnf的位置(很容易错过,这是我大部分时间浪费的地方) 根据{{​​3}}(请注意您的mysql版本,并在相应的版本中查找相同的文档)。

  4. this mysql dev guideline

    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,它就像一个魅力。