文档章节

mysql关闭autocommit带来的坑

messud4312
 messud4312
发布于 2015/05/21 18:01
字数 245
阅读 3372
收藏 0

我们打开两个mysql client,首先关闭autocommit。然后分别同时按照从上到下执行,每条语句后面都标上了执行顺序。

mysql> set autocommit = 0;  #1         │mysql> set autocommit = 0;  #2
Query OK, 0 rows affected (0.00 sec)   │Query OK, 0 rows affected (0.00 sec)
                                       │
mysql> insert into user values ("Stupid│mysql> select * from user;  #4
 ET");   #3                            │Empty set (0.00 sec)
Query OK, 1 row affected (0.03 sec)    │
                                       │mysql>
mysql> commit; #5                      │mysql>
Query OK, 0 rows affected (0.02 sec)   │mysql>
                                       │mysql>
mysql> select * from user where name = │mysql> select * from user where name =
"Stupid ET";  #6                       │ "Stupid ET";  #7
+-----------+                          │Empty set (0.00 sec)
| name      |                          │
+-----------+                          │mysql>
| Stupid ET |                          │
+-----------+                          │
1 row in set (0.00 sec)                │

可以看到右边的client里面是查不到新加入的name为”Stupid ET”的用户。

因为在执行#4这条命令的时候,导致右边的client自动进入了一个事务了,而此时数据库是没有的name为”Stupid ET”这个用户的。所以就导致即使数据库里面存在name为”Stupid ET”的记录,右边的client也查不到。


© 著作权归作者所有

共有 人打赏支持
messud4312
粉丝 5
博文 126
码字总数 101903
作品 0
海淀
后端工程师
mysql之innodb引擎使用方法

前言 闲来无事做不如MySQL。 一.简介: 1.Linux下使用MySQL数据库时,为了支持事务操作需要用到InnoDB引擎,对于表中处理的插入,更新等操作失败时 ,回滚前面不应该完成的操作是必须的. 2.一般M...

李伟铭k
07/09
0
0
基于binlog的mysql数据恢复

使用了python-mysql-replication 这个库做mysql数据库的恢复.插桩测试中准备数据.由于是多系统交互,业务较为复杂,所以模拟操作,然后抽取数据流动变化,记录下来.下次直接操作数据库,达到快速新...

豆泥碗
2014/02/21
0
0
MySQL事务autocommit自动提交设置

MySQL提交模式 MySQL默认操作模式是 autocommit 自动提交模式。此模式下,除非显式的声明使用事务,即: 开始一个事务,否则每个操作都将被当做一个单独的事务自动提交。 MySQL提交模式查询与...

前世疯狂
03/23
0
0
mysql start transaction 和 set autocommit = 0 的区别

1、set autocommit = 0 关闭当前会话中事务的自动提交,需要手动 commit 或者 rollback,相当于开启一个全局的事务。在 mysql 的事务中,默认 autocommit = 1,每一次 sql 操作都被认为是一个...

big_cat
2016/11/10
304
0
【整理】MySQL 之 autocommit

mysql 默认是开启 auto commit 的。可以通过如下命令查看 session 级别和 global 级别的设置: mysql> select @@session.autocommit;+----------------------+| @@session.autocommit |+----......

摩云飞
2013/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
1
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部