MySQL的autocommit(自动提交)默认是开启,其对mysql的性能有一定影响,举个例子来说,如果你插入了1000条数据,mysql会commit1000次的,如果我们把autocommit关闭掉,通过程序来控制,只要一次commit就可以了。

1,我们可以通过set来设置autocommit

  1. mysql> set global init_connect="set autocommit=0";  //提示你用权限更高的财户来设置
  2. ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
  3. mysql> set autocommit=0;
  4. Query OK, 0 rows affected (0.00 sec)
  5. mysql> select @@autocommit;   //查看一下autocommit的设置
  6. +--------------+
  7. | @@autocommit |
  8. +--------------+
  9. |            0 |
  10. +--------------+
  11. 1 row in set (0.00 sec)

2,我们可以修改mysql的配置文件my.cnf来关闭autocommit

  1. [mysqld]
  2. init_connect='SET autocommit=0'  //在mysqld里面加上这些内容

用第二种方法关,有一点要注意,连接mysql用户的权限不能大于启动mysql的用户的权限,不然init_connect='SET autocommit=0'根本不会启作用,也不会报任何错误,汗一个先。看以下实例

  1. zhangy@ubuntu:~$ mysql -umysql
  2. Welcome to the MySQL monitor.  Commands end with ; or \g.
  3. Your MySQL connection id is 1
  4. Server version: 5.5.2-m2-log Source distribution
  5. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  6. mysql> select @@autocommit;     //mysql是启动用户,关闭autocommit成功
  7. +--------------+
  8. | @@autocommit |
  9. +--------------+
  10. |            0 |
  11. +--------------+
  12. 1 row in set (0.00 sec)
  13. mysql> Ctrl-C -- exit!
  14. Aborted
  15. zhangy@ubuntu:~$ mysql -uroot
  16. Welcome to the MySQL monitor.  Commands end with ; or \g.
  17. Your MySQL connection id is 2
  18. Server version: 5.5.2-m2-log Source distribution
  19. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  20. mysql> select @@autocommit;    //用root财户启动,不成功。
  21. +--------------+
  22. | @@autocommit |
  23. +--------------+
  24. |            1 |
  25. +--------------+
  26. 1 row in set (0.00 sec)

这个会不会是mysql的bug呢?我在网上找了找这方面的问题,还真有。部分内容如下:
If a user has SUPER privilege, init_connect will not execute
(otherwise if init_connect will a wrong query no one can connect to server).

Note, if init_connect is a wrong query, the connection is closing without any errors
and next command will clause 'lost connection' error.

里面有一点说的很清楚If a user has SUPER privilege, init_connect will not execute,如果用户有更高级的权限,init_connect根本不会执行。

http://blog.csdn.net/ying_593254979/article/details/12095169

mysql禁用autocommit,以及遇到的问题(转)的更多相关文章

  1. mysql禁用autocommit,以及遇到的问题

    原文地址:http://blog.51yip.com/mysql/1230.html http://blog.csdn.net/ying_593254979/article/details/12095 ...

  2. 关于mysql 的 autoCommit 参数

    首先描述一下这个参数的作用. 这个参数 默认是开启的. 开启以后再命令敲的sql 会自动提交.如果关闭,就必须手动 commit. 查看 这个 自动提交状态. SELECT @@autocommit; ...

  3. Mysql中autocommit的用法

    定义 Mysql文档原文:SET autocommit disables or enables the default autocommit mode for the current session. ...

  4. MySQL 的 autocommit

    在自动提交模式(autocommit=ON)下提交事务: •在自动提交模式下,每个SQL语句都是一个独立的事务. –mysql>insert into ACCOUNTS values(1,'To ...

  5. 【mysql】autocommit=0后,commit, rollback无效

    之前在[mysql]MySQLdb中的事务处理中用autocommit和commit()以及rollback()实现了事务处理. 但后来,用同样的代码在另一个数据库中运行却失败了.找了一个下午的原因. ...

  6. 从知乎了解到,为什么Mysql禁用存储过程、外键和级联?

    打开帖子直接一张醒目的图,是阿里巴巴的Java开发手册对Mysql相关的要求. 看看下面的回复 灵剑 存储过程没有版本控制,版本迭代的时候要更新很麻烦.存储过程如果和外部程序结合起来用,更新的时候很难 ...

  7. mysql事务,SET AUTOCOMMIT,START TRANSACTION

    http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...

  8. mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法

    http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...

  9. mysql java.sql.SQLException: Can't call commit when autocommit=true

    java.sql.SQLException: Can't call commit when autocommit=true at com.mysql.jdbc.SQLError.createSQLEx ...

随机推荐

  1. VC++6.0打开文件出错的解决办法

    1.下载http://support.microsoft.com/kb/241396里面的一个叫FileTool.exe的文件并解压,解压后是一个vc工程,用vc6.0打开工程,编译,得到FileTo ...

  2. hadoop的集群安装

    hadoop的集群安装 1.安装JDK,解压jar,配置环境变量 1.1.解压jar tar -zxvf jdk-7u79-linux-x64.tar.gz -C /opt/install //将jd ...

  3. 杭电ACM求平均成绩

    求平均成绩 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. android获取系统wifi状态等

    WIFI 获取WIFI状态 WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); ...

  5. Save Princess(丑数)

    Save Princess 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Yesterday, the princess was kidnapped by a de ...

  6. http Post 请求一网络资源返回字符串

    public static String sendPost(String url, String param) {   PrintWriter out = null;   BufferedReader ...

  7. POJ 1155 - TELE 树型DP(泛化背包转移)..

    dp[x][y]代表以x为根的子树..连接了y个终端用户(叶子)..所能获得的最大收益... dp[x][ ]可以看成当根为x时..有个背包空间为0~m...每个空间上记录了到到达这个空间的最大收益. ...

  8. python学习(一)

    1 python一切皆为对象,因为现实 包含了一系列的数据和操作这些数据的方法的一个整体,就叫作对象. 自行车 属性:手刹车,轮胎,脚踏板方法:如何前进的方法,控制停止的方法,控制方向 实际内容 男人 ...

  9. ssh "openssh-daemon is stopped"操作之伤+sftp访问“-bash: /dev/null: Permission denied”

    1.ssh "openssh-daemon is stopped"操作之伤 原来好好的 sshd服务突然发现  不能重新启动了: [root@bogon rules.d]# ser ...

  10. 使用Qt设计师文件的3种方式

    使用Qt设计师设计的.ui界面文件是XML文件,有3种方式在PyQt中使用,本文将通过实例进行讲解. 使用PyQt中如何结合Qt设计师进行开发中的例子.点击按钮修改标签的内容. 1. 直接使用ui文件 ...