﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-技术博客</title><link>http://www.cppblog.com/chenjunjun/</link><description>c/c++/python/linux</description><language>zh-cn</language><lastBuildDate>Tue, 14 Apr 2026 23:06:11 GMT</lastBuildDate><pubDate>Tue, 14 Apr 2026 23:06:11 GMT</pubDate><ttl>60</ttl><item><title>vs 2013 配置 asio 开发环境</title><link>http://www.cppblog.com/chenjunjun/archive/2014/09/17/208346.html</link><dc:creator>chenjunjun</dc:creator><author>chenjunjun</author><pubDate>Wed, 17 Sep 2014 10:22:00 GMT</pubDate><guid>http://www.cppblog.com/chenjunjun/archive/2014/09/17/208346.html</guid><wfw:comment>http://www.cppblog.com/chenjunjun/comments/208346.html</wfw:comment><comments>http://www.cppblog.com/chenjunjun/archive/2014/09/17/208346.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjunjun/comments/commentRss/208346.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjunjun/services/trackbacks/208346.html</trackback:ping><description><![CDATA[<div>### 我的环境<br /><br />&nbsp;&nbsp; &nbsp;操作系统：windows 7 x64 sp1<br />&nbsp;&nbsp; &nbsp;VS版本：VS 2013<br />&nbsp;&nbsp; &nbsp;Boost版本：1.56.0<br /><br />### 下载boost<br /><br />&nbsp;&nbsp; &nbsp;官网：www.boost.org<br /><br />&nbsp;&nbsp; &nbsp;下载预编译版本的boost：http://sourceforge.net/projects/boost/files/boost-binaries/<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;我下载的版本：<br />&nbsp;&nbsp; &nbsp;http://sourceforge.net/projects/boost/files/boost-binaries/1.56.0/boost_1_56_0-msvc-12.0-32.exe/download<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;<br />### 安装<br /><br />&nbsp;&nbsp; &nbsp;直接运行下载exe文件，可以选择安装路径。<br />&nbsp;&nbsp; &nbsp;我的安装目录为：E:\lib\boost_1_56_0<br />&nbsp;&nbsp; &nbsp;<br />### 创建测试项目<br /><br />&nbsp;&nbsp; &nbsp;我创建的项目为：boost_asio_test<br /><br />### 配置项目<br /><br />#### 配置 boost asio 头文件<br /><br />&nbsp;&nbsp; &nbsp;右键项目属性，弹出配置窗口；<br />&nbsp;&nbsp; &nbsp;点击在配置属性-&gt;C/C++-&gt;常规-&gt;附加包含目录,出现下拉菜单，点击编辑，弹出窗口；<br />&nbsp;&nbsp; &nbsp;点击右右上角新建一条记录，内容为boost的安装路径：E:\lib\boost_1_56_0<br /><br />#### 配置 boost asio 库目录<br /><br />&nbsp;&nbsp; &nbsp;右键项目属性，弹出配置窗口；<br />&nbsp;&nbsp; &nbsp;点击在配置属性-&gt;连接器-&gt;常规-&gt;附加库目录, 出现下拉菜单，点击编辑，弹出窗口；<br />&nbsp;&nbsp; &nbsp;点击右右上角新建一条记录，内容为boost的安装路径中的库路径：E:\lib\boost_1_56_0\lib32-msvc-12.0<br /><br />#### 配置 boost asio 库文件<br /><br />&nbsp;&nbsp; &nbsp;库 date_time和 system 是 boost asio 的必须库。<br />&nbsp;&nbsp; &nbsp;右键项目属性，弹出配置窗口；<br />&nbsp;&nbsp; &nbsp;点击配置属性-&gt;连接器-&gt;输入-&gt;附加依赖项,出现下拉菜单，点击编辑，弹出窗口；<br />&nbsp;&nbsp; &nbsp;在上方的窗口中填写入:boost_date_time-vc120-mt-1_56.lib, boost_system-vc120-mt-1_56.lib 每行一条，这里为两行<br />&nbsp;&nbsp; &nbsp;<br />### 测试<br /><br />#include "stdafx.h"<br /><br />#include "boost/asio.hpp"<br /><br />using namespace boost::asio;<br /><br /><br />int _tmain(int argc, _TCHAR* argv[])<br />{<br />&nbsp;&nbsp; &nbsp;io_service io;<br />&nbsp;&nbsp; &nbsp;return 0;<br />}<br /><br />运行报错：<br />丢失 boost_system-vc120-mt-1_56.dll需要配置运行时的库：<br /><br />从boost库目录E:\lib\boost_1_56_0\lib32-msvc-12.0中复制：boost_date_time-vc120-mt-1_56.dll和boost_system-vc120-mt-1_56.dll到生成的exe文件目录下。<br />我的exe文件目录为:项目目录/Debug<br /><br />再次运行OK！</div><img src ="http://www.cppblog.com/chenjunjun/aggbug/208346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjunjun/" target="_blank">chenjunjun</a> 2014-09-17 18:22 <a href="http://www.cppblog.com/chenjunjun/archive/2014/09/17/208346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql下InnoDB的可重复读级别的事务测试</title><link>http://www.cppblog.com/chenjunjun/archive/2014/09/16/208330.html</link><dc:creator>chenjunjun</dc:creator><author>chenjunjun</author><pubDate>Tue, 16 Sep 2014 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/chenjunjun/archive/2014/09/16/208330.html</guid><wfw:comment>http://www.cppblog.com/chenjunjun/comments/208330.html</wfw:comment><comments>http://www.cppblog.com/chenjunjun/archive/2014/09/16/208330.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjunjun/comments/commentRss/208330.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjunjun/services/trackbacks/208330.html</trackback:ping><description><![CDATA[<div><span style="font-family: Courier;">Mysql下InnoDB的可重复读的事务测试</span><br /><br /><span style="font-family: Courier;">### 背景：</span><br /><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; * mysql版本：Server version: 5.1.71</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; * 操作系统：CentOS 6.5 X64</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; * 事务隔离级别：不可重复读</span><br /><br /><span style="font-family: Courier;">### 实验前的准备：</span><br /><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; use test;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; create table test_table(id int primary key, name varchar(255)) ENGINE=InnoDB;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; insert into test_table value(1, 'lily');</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; create table test_table2(id int primary key, name varchar(255)) ENGINE=InnoDB;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; insert into test_table2 value(1, 'lucy');</span><br /><br /><span style="font-family: Courier;">### 实验1</span><br /><br /><span style="font-family: Courier;">问题：事务从什么时候开始？</span><br /><br /><span style="font-family: Courier;">测试两边同事开启事务，只在终端A中进行update操作，提交完成之后，在终端B中观察</span><br /><br /><span style="font-family: Courier;">步骤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端B</span><br /><span style="font-family: Courier;">&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; set autocommit = off;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; set autocommit = off;</span><br /><span style="font-family: Courier;">&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; update test_table set name = 'lucy';</span><br /><span style="font-family: Courier;">&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br /><span style="font-family: Courier;">&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; select * from test_table;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | id | name&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 1 | lucy&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 rows in set (0.00 sec)</span><br />&nbsp;<br />&nbsp;<br /><br /><span style="font-family: Courier;">在终端B中直接可以看到终端A所做的修改，说明事务并不是从命令"set autocommit = off"执行时就开始；</span><br /><br /><br /><span style="font-family: Courier;">还原影响数据：</span><br /><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; update test_table set name = 'lily';</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br />&nbsp;&nbsp; &nbsp;<br /><span style="font-family: Courier;">只在终端A中进行更新操作，同时在终端B中对库中的任意一个表进行一个操作，终端A提交之后，观察终端B中的数据；然后在终端B中执行commit之后，再次查看终端A中修改的数据。</span><br />&nbsp;<br /><span style="font-family: Courier;">&nbsp;步骤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端B</span><br /><span style="font-family: Courier;">&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;</span><br /><span style="font-family: Courier;">&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; update test_table set name = 'lucy';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; select * from test_table2;</span><br /><span style="font-family: Courier;">&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br /><span style="font-family: Courier;">&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; select * from test_table;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | id | name&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 1 | lily&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 row in set (0.00 sec)</span><br /><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; select * from test_table;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | id | name&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 1 | lucy&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 row in set (0.00 sec)</span><br /><br /><br /><br /><span style="font-family: Courier;">这里启动了事务，说明事务是以第一条SQL时开始的</span><br /><br /><span style="font-family: Courier;">### 实验2</span><br /><br /><span style="font-family: Courier;">问题：InnoDB在不可重复读隔离级别下，有没有幻读情况</span><br /><br /><span style="font-family: Courier;">还原影响数据：</span><br /><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; update test_table set name = 'lily';</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br /><br /><span style="font-family: Courier;">&nbsp;步骤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端B</span><br /><span style="font-family: Courier;">&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;</span><br /><span style="font-family: Courier;">&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; insert into test_table value(2, 'lucy');&nbsp;&nbsp; mysql&gt; select * from test_table2;</span><br /><span style="font-family: Courier;">&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br /><span style="font-family: Courier;">&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; select * from test_table;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | id | name&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 1 | lily&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 row in set (0.00 sec)</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; select * from test_table;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | id | name&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 1 | lily&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 2 | lucy&nbsp;&nbsp; |</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----+--------+</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 rows in set (0.00 sec)</span><br /><br /><span style="font-family: Courier;">这里没有存在幻读的情况，说明InnoDB对幻读有处理。</span><br /><br /><span style="font-family: Courier;">### 实验3</span><br /><br /><span style="font-family: Courier;">问题：同事开启两个事务A和B，事务A中插入一条记录R，事务B中插入另一条记录R2，R2的主键与记录R相同，如何处理？</span><br /><br /><span style="font-family: Courier;">还原影响数据：</span><br /><br /><span style="font-family: Courier;">&nbsp;&nbsp; &nbsp;mysql&gt; delete from test_table where id = 2;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br /><br /><span style="font-family: Courier;">步骤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端B</span><br /><span style="font-family: Courier;">&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;</span><br /><span style="font-family: Courier;">&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; insert into test_table value(2, 'lucy');&nbsp;&nbsp; mysql&gt; select * from test_table2;</span><br /><span style="font-family: Courier;">&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; commit;</span><br /><span style="font-family: Courier;">&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; insert into test_table value(2, 'lucy');</span><br /><span style="font-family: Courier;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'</span><br /><br /><span style="font-family: Courier;">这种情况下，会报错。</span><br /><br /><span style="font-family: Courier;">### 实验4</span><br /><br /><span style="font-family: Courier;">问题：不同事务更新同一条记录。</span><br /><br /><span style="font-family: Courier;">步骤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;终端B</span><br /><span style="font-family: Courier;">&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; rollback;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;mysql&gt; rollback;</span><br /><span style="font-family: Courier;">&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; update test_table set name = 'lily2' where id = 1;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</span><br /><span style="font-family: Courier;">&nbsp;3&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; mysql&gt; update test_table set name = 'lily3' where id = 1;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;... 卡住 ... 在超过一定时间之后报错：</span><br /><span style="font-family: Courier;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction</span><br /><br /><span style="font-family: Courier;">两个事务在编辑同一条数据时，先编辑的事务会将该记录锁定，或编辑的事务会等待一定时间，如果一定直接内仍然被锁定则报错。</span></div><img src ="http://www.cppblog.com/chenjunjun/aggbug/208330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjunjun/" target="_blank">chenjunjun</a> 2014-09-16 17:44 <a href="http://www.cppblog.com/chenjunjun/archive/2014/09/16/208330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos 6.5 x86-64 下编译安装mysql_connector_c++</title><link>http://www.cppblog.com/chenjunjun/archive/2014/08/12/207986.html</link><dc:creator>chenjunjun</dc:creator><author>chenjunjun</author><pubDate>Tue, 12 Aug 2014 09:01:00 GMT</pubDate><guid>http://www.cppblog.com/chenjunjun/archive/2014/08/12/207986.html</guid><wfw:comment>http://www.cppblog.com/chenjunjun/comments/207986.html</wfw:comment><comments>http://www.cppblog.com/chenjunjun/archive/2014/08/12/207986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjunjun/comments/commentRss/207986.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjunjun/services/trackbacks/207986.html</trackback:ping><description><![CDATA[### 安装依赖<br /><div><br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ su -<br />&nbsp;&nbsp; &nbsp;Password:<br />&nbsp;&nbsp; &nbsp;[root@localhost ~]# yum install wget cmake gcc-c++ boost-devel mysql-devel<br />&nbsp;&nbsp; &nbsp;[root@localhost ~]# exit<br />&nbsp;&nbsp; &nbsp;logout<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$<br /><br />### 编译安装mysql-connector-c++<br /><br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ wget http://dev.mysql.com/get/Downloads/Connector-C++/mysql-connector-c++-1.1.4.tar.gz<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ tar zxvf mysql-connector-c++-1.1.4.tar.gz<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ cd mysql-connector-c++-1.1.4<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost mysql-connector-c++-1.1.4]$ mkdir build<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost mysql-connector-c++-1.1.4]$ cd&nbsp; build<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost build]$ cmake -DCMAKE_INSTALL_PREFIX=/home/chenjunjun/usr/mysql_connect_c++/ -DMYSQL_LIB=/usr/lib64/mysql/libmysqlclient.so ..<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost build]$ make <br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost build]$ vim cppconn/cmake_install.cmake<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 38&nbsp;&nbsp;&nbsp;&nbsp; "/home/chenjunjun/mysql-connector-c++-1.1.4/cppconn/config.h"<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;==修改为==&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 38&nbsp;&nbsp;&nbsp;&nbsp; "/home/chenjunjun/mysql-connector-c++-1.1.4/build/cppconn/config.h"<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost build]$ make install<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost build]$ cd<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ <br /><br />### 设置<br /><br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ echo "export LD_LIBRARY_PATH=~/usr/mysql_connect_c++/lib/" &gt;&gt; ~/.bashrc<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ . ./.bashrc<br /><br />### 测试<br /><br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ vi test.cc<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#include &lt;iostream&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#include &lt;string&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#include &lt;mysql_connection.h&gt;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;#include &lt;mysql_driver.h&gt;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;using namespace std;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;using namespace sql;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int main(){<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Driver* driver;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Connection* conn;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;driver = get_driver_instance();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;conn = driver-&gt;connect("数据库地址", "用户名", "用户密码");<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;conn-&gt;setAutoCommit(1);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cout &lt;&lt; "DataBase connection autocommit mode = " &lt;&lt; conn-&gt;getAutoCommit() &lt;&lt; endl;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;delete conn;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;driver = NULL;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;conn = NULL;<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return 0;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ g++ test.cc -I ~/usr/mysql_connect_c++/include -L ~/usr/mysql_connect_c++/lib -l mysqlcppconn -o test<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$ ./test<br />&nbsp;&nbsp; &nbsp;DataBase connection autocommit mode = 1<br />&nbsp;&nbsp; &nbsp;[chenjunjun@localhost ~]$</div><img src ="http://www.cppblog.com/chenjunjun/aggbug/207986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjunjun/" target="_blank">chenjunjun</a> 2014-08-12 17:01 <a href="http://www.cppblog.com/chenjunjun/archive/2014/08/12/207986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>技术重修之路</title><link>http://www.cppblog.com/chenjunjun/archive/2014/08/12/207985.html</link><dc:creator>chenjunjun</dc:creator><author>chenjunjun</author><pubDate>Tue, 12 Aug 2014 08:58:00 GMT</pubDate><guid>http://www.cppblog.com/chenjunjun/archive/2014/08/12/207985.html</guid><wfw:comment>http://www.cppblog.com/chenjunjun/comments/207985.html</wfw:comment><comments>http://www.cppblog.com/chenjunjun/archive/2014/08/12/207985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenjunjun/comments/commentRss/207985.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenjunjun/services/trackbacks/207985.html</trackback:ping><description><![CDATA[<div>## 初级篇<br /><br />---<br /><br />#### [编码 : 隐匿在计算机软硬件背后的语言](http://book.douban.com/subject/4822685/)<br /><br />#### [C程序设计语言 (第二版)](http://book.douban.com/subject/1139336/)<br /><br />#### [设计模式 : 可复用面向对象软件的基础 ](http://book.douban.com/subject/1052241/)<br /><br />## 中级篇<br /><br />---<br /><br />#### [代码大全（第二版）](http://book.douban.com/subject/1477390/)<br /><br />#### [深入理解计算机系统 (第二版) ](http://book.douban.com/subject/1230413/)<br /><br />#### [企业应用架构模式](http://book.douban.com/subject/4826290/)<br /><br /><br />## 高级篇<br /><br />---<br /><br />#### [面向模式的软件架构 卷1: 模式系统](http://book.douban.com/subject/25741382/)<br />#### [面向模式的软件架构 卷2: 并发和联网对象模式](http://book.douban.com/subject/25755594/)<br />#### [面向模式的软件架构 卷3: 资源管理模式](http://book.douban.com/subject/24527611/)<br />#### [面向模式的软件架构 卷4: 分布式计算的模式语言](http://book.douban.com/subject/4848563/)<br />#### [面向模式的软件架构 卷5: 模式与模式语言](http://book.douban.com/subject/6819532/)<br /><br />#### [人月神话](http://book.douban.com/subject/1102259/)<br /><br />#### [数据结构与算法分析 : C语言描述](http://book.douban.com/subject/1139426/)<br /><br />#### [面向对象分析与设计 : （第三版）](http://book.douban.com/subject/3892590/)<br /><br />## 其他<br /><br />---<br /><br />#### [测试驱动开发](http://book.douban.com/subject/1230036/)<br /><br />#### [计算机程序的构造和解释 (第二版)](http://book.douban.com/subject/1148282/)<br /><br />#### [重构 : 改善既有代码的设计 ](http://book.douban.com/subject/1229923/)</div><img src ="http://www.cppblog.com/chenjunjun/aggbug/207985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenjunjun/" target="_blank">chenjunjun</a> 2014-08-12 16:58 <a href="http://www.cppblog.com/chenjunjun/archive/2014/08/12/207985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>