`

mysql设置autocommit关闭

 
阅读更多

mysql默认开启auto commit,可以,通过这几个sql查看:

select @@autocommit;

SHOW VARIABLES LIKE '%AUTOCOMMIT%';

SHOW GLOBAL STATUS LIKE '%AUTOCOMMIT%'; 

我们可以通过系统变量控制来动态控制session级别autocommit

(set autocommit = 0|1),session级别的用处不大,全局禁用才好。

如何从全局禁用autocommit呢,大多数时候我们不想让mysql自动提交,用程序代码来控制,比如spring的声明式事务。

mysql有一个Cmd-Line&Option file&System Var可以帮助我们实现这样的功能,它就是init_connect。

一个比较好用的设置方法是在mysql的初始化文件my.int里加多一行设置。如我的my.int文件路径是:D:\Program Files\MySQL\MySQL Server 5.1\my.int,打开这个文件,在[mysqld]下面加多一行:init_connect=’SET autocommit=0′,如:

[mysqld]

#这个对拥有root权限的用户无效
init_connect='SET autocommit=0'

# The TCP/IP Port the MySQL Server will listen on
port=3306

 

但是,这个参数的设置对拥有super权限的用户是无效的,用官方的具体说明如下:

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. Not executing init_connect for users that have the SUPER privilege enables them to open a connection and fix the init_connect value.

估计是mysql的一个bug.

 

另外:mysql默认的存储引擎是InnoDB,支持事务操作。

 

一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看:

看你的mysql现在已提供什么存储引擎:
mysql> show engines;

看你的mysql当前默认的存储引擎:
mysql> show variables like '%storage_engine%';

你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
mysql> show create table 表名;
分享到:
评论

相关推荐

    mysql数据库的基本操作语法

    MySQL结束符是“;”结束。 1、 显示所有数据库 show databases; 2、 删除数据库 drop database dbName; 3、 创建数据库 create database [if not exists] dbName; 中括号部分可选的,判断该数据不存在就创建 4、 ...

    mysql事务select for update及数据的一致性处理讲解

    如果我们把autocommit关闭掉[autocommit = 0],通过程序来控制,只要一次commit就可以了,这样也才能更好的体现事务的特点! 对于需要操作数值,比如金额,个数等等! 记住一个原则:一锁二判三更新 在MySQL的InnoDB...

    mysql进阶知识点之事务

    MySQL 事务主要用于处理操作量大,复杂度高的数据。...关闭自动事务,每次sql语句后可以跟随rollback 回滚,不执行前一次sql 3、执行sql之前,写一个begain;sql语句1;sql语句2; 手动开启事务,可以

    php下pdo的mysql事务处理用法实例

    1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交 注意:mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持,下面是实例代码: 复制代码 代码如下:<?php  try{  $...

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    另外,也可以使用 admin 的命令来设置是否开启/关闭某个过滤条件 SQL执行的时间 由参数 query-filter-time-threshold 来指定,如果SQL执行时间超过此值,则满足条件 SQL执行频率 由参数 query-...

    Mysql事项,视图,函数,触发器命令(详解)

    //关闭自动提交 set autocommit=0; //扣100 update bank set money=money-100 where bid=1; //回滚,begin开始的所有sql语句操作 rollback; //开启事务 begin; //关闭自动提交 set autocommit=0; //扣100 update ...

    jdbc连接数据库的方式2

    二、JDBC连接MySql方式 下面是使用JDBC连接MySql的一个小的教程 1、查找驱动程序 MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此...

    PHP mysqli事务操作常用方法分析

    //参数如果设置为 FALSE,则表示关闭 auto-commit。如果设置为 TRUE,则表示开启 auto-commit(提交任何等待查询)。 bool mysqli::autocommit ( bool $mode ) 2、 //回退当前事务 bool mysqli::rollback () 3、 ...

    PHP的mysqli_rollback()函数讲解

    关闭自动提交,做一些查询,提交查询,然后回滚当前事务: <?...$con=mysqli_connect... echo 连接 MySQL 失败: . mysqli_connect_error(); } // 关闭自动提交 mysqli_autocommit($con,FALSE); // 插入数据 m

    SQL 事务与锁 详解

    在MySql中关闭自动提交 autocommit1.4. 回滚 rollback 与 保存点 savepoint1.5. 提交 commit1.6. 开启事务2. 锁机制2.1. 锁机制的必要性2.2. 锁基础2.2. 行级锁2.2.1. 共享锁与排他锁2.2.2. 意向锁2.2.3. 死锁与...

Global site tag (gtag.js) - Google Analytics