MySQL InnoDB - 对事务感到困惑

2024-03-17

我已经使用MySQL很多年了,但是没有太多使用InnoDB引擎的经验。

我现在正在对它运行一些测试,因为我将要使用它,并且从我读到的内容来看,如果该事务中的任何查询存在任何问题,它不应该允许任何内容“通过”。

我的问题是,为什么在下面的代码中......当第三个查询明显有问题时,它仍然将前两个查询输入数据库吗?

$query = "BEGIN";
mysql_query($query);

$query = "INSERT INTO list_columns(lid,column_name) VALUES(8,'test')";
mysql_query($query);

$query = "INSERT INTO list_columns(lid,column_name) VALUES(8,'test')";
mysql_query($query);

$query = "INSERT INT list_columns(lid,column_name) VALUES(8,'test')";
mysql_query($query);

$query = "COMMIT";
mysql_query($query);

Edit:我了解使用 ROLLBACK 和所有......但我认为事务的全部目的是这样,如果事务中的任何查询有任何问题,那么它们都不会被执行......或者这个例如,仅在一个查询中有多个插入的情况......如果其中一个插入出现问题,那么不会插入任何插入?


如果问题类似于“此插入违反了唯一键",提交将会发生。您必须检查自己查询是否返回错误,如果是,ROLLBACK.

例如,如果问题是服务器意外关闭,则查询 1 和 2 将不会发生。

当然,由于这里的 3 个查询是相同的,所以这是一个愚蠢的例子。至少改变一下lid查看。你为什么不做一个快速测试呢?

编辑:您编辑了有关交易目的的问题。

交易的目的确实是保持数据库处于一致状态(阅读ACID http://en.wikipedia.org/wiki/ACID),但是由程序员决定什么是一致的。看着Prodigitalson的回答 https://stackoverflow.com/a/4819056/327563查看可能为您执行此操作的 php 错误捕获方式的示例。但是,当您处于事务中时,其他进程将看不到您的事务正在执行的更改 - 因此是原子的和隔离的。

CREATE TABLE `testkeys` (
  `lid` INT,
  `column_name` VARCHAR(50),
  UNIQUE KEY `testuniq` (`lid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

BEGIN;
INSERT INTO testkeys(lid,column_name) VALUES(1,'test 1');
INSERT INTO testkeys(lid,column_name) VALUES(2,'test 2');
INSERT INTO testkeys(lid,column_name) VALUES(3,'test 3');
INSERT INTO testkeys(lid,column_name) VALUES(2,'test 2b');
COMMIT;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL InnoDB - 对事务感到困惑 的相关文章

  • 如何为 eclipse PHP 调试设置正确的 URL

    我在使用非标准 URL 在 Eclipse 中设置 PHP 调试时遇到问题 我的应用程序的 URL 必须是http xxx index php http xxx index php 这是我无法轻易改变的 我在设置调试配置来调用此 URL 时
  • “composer”在 Windows 服务器中未被识别为内部或外部命令

    我使用的是Windows Server 2008操作系统 我下载作曲家安装程序 exe https getcomposer org download 并安装到我的电脑上 当我尝试时composer install 我收到错误 compose
  • 使用 Kendo Upload 进行 Kendo Grid 内联编辑返回空结果

    我有 Kendo UI Gridinline编辑和我的领域之一 propertyLogo I use 剑道上传 https demos telerik com kendo ui upload index上传图像 使用kendoUpload函
  • 我如何修复此 php 代码导致的本月最后一天错误?

    下面的代码是我用于网站菜单的代码 它将当前月份页面的链接移动到月份更改时的链接列表的顶部 但在某些月份的 31 号 例如 4 月 这会失败 对于大多数链接 我得到了同一个月的两个链接 我已经阅读了 php 生成日期方式的问题 但不知道如何更
  • 为什么 MySQL 将 é 与 e 视为相同?

    我使用 Django Web 应用程序将 Unicode 字符串存储在 MySQL 数据库中 我可以很好地存储 Unicode 数据 但是在查询时 我发现 and e被视为好像它们是同一个角色 In 1 User objects filte
  • 子目录中的 CakePHP 控制器和模型

    你好 我想知道如何将我的组件和模型放在子目录中 假设我有一个 Web 应用程序 它有 3 个不同的区域 管理员 用户 开发人员 每个区域执行不同的操作并具有完全不同的界面 所以我希望管理员去http www site com admin h
  • 为什么我们要关闭 Mysqli 中的结果

    为什么我们要关闭 result mysqli new mysqli localhost root root test if mysqli gt connect errno echo Failed to connect to MySQL my
  • Facebook API 注销我的应用程序,但不注销 Facebook

    如何使用 Facebook 的 api 进行注销 让我退出我的应用程序 网站 但保持登录 facebook com 的状态 这让我登录正常 window fbAsyncInit function FB init appId status t
  • 将数据从 javascript 发送到 mysql 数据库

    我有这个小点击计数器 我想将每次点击都包含在 mysql 表中 有人可以帮忙吗 var count1 0 function countClicks1 count1 count1 1 document getElementById p1 in
  • 帮助将二进制图像数据从 SQL Server 读取到 PHP 中

    我似乎无法找到将二进制数据从 SQL 服务器读取到 PHP 的方法 我正在开发一个项目 需要能够将图像直接存储在 SQL 表中 而不是文件系统上 目前 我一直在使用这样的查询 插入 myTable 文档 选择 从 OPENROWSET BU
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • 将 mod-rewrite 添加到现有 PHP 网站

    我正在更新一个 php 应用程序 该应用程序当前不使用 url 重写 目的是隐藏文件扩展名 网站总体结构如下 root index php login php page1 php page2 php page3 php page4 php
  • MySQL如何进行浮点加法的数学计算?

    我测试过SELECT 0 1 0 2 用MySQL MariaDB 查询 它返回了正确的答案 MariaDB none gt SELECT 0 1 0 2 0 1 0 2 0 3 1 row in set 0 000 sec 在大多数编程语
  • MAMP Python-MySQLdb 问题:调用 Python 文件后 libssl.1.0.0.dylib 的路径发生变化

    我正在尝试使用 python MySQLdb 访问 MAMP 服务器上的 MySQL 数据库 当我最初尝试使用 python sql 调用 Python 文件来访问 MAMP 上的数据库时 我得到了image not found关于错误li
  • 如何使用PHP在服务器端缩小图像?

    我有一些从服务器提取的图像 imgUrl保存图像的路径 现在我用 img src width 100 height 200 或 CSS 来缩小图像 但我想在 PHP 中执行此操作 以便将已缩放的图像提供给 DOM 有任何想法吗 Thanks
  • 根据产品变体术语将收件人添加到 Woocommerce 电子邮件通知

    我创建了一个 Woocommerce 插件并要求它做两件事 根据购物车中的产品变体 向特定电子邮件地址发送通知消息 电子邮件必须仅包含相关产品 不得包含其他属性的产品 例如 产品 A 具有名为 Chef 的属性 其中 Chef one 和
  • 如何使用 facebook 用户登录我的网站?

    我想知道 facebook 如何让用户登录我们的网站 我的意思是用户需要注册到我的网站才能发表评论 我如何通过我的 php 代码检查它是否是登录用户 我听说你只能用javascript检查它是否是登录用户 感谢您的任何解释 您可以使用脸书
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc

随机推荐

  • 使用 Interop.Excel 将 Excel 转换为 PDF 时不显示图像

    我正在使用 Interop Excel 将 excel xlsx 2010 转换为 PDF 以用于应用程序 在我的开发机器上它工作正常并且图像显示正确 但是 在服务器上 当 Excel 转换为 PDF 时 图像 一些通过代码插入 另一些在模
  • FireMonkey 控件是否具有与 VCL Invalidate() 等效的方法?

    我正在创建一些自定义 FireMonkey GUI 控件 组件需要更新以响应用户交互 VCL 控件可以调用 Invalidate 将其放入队列中进行重绘 FireMonkey 有等效的方法吗 FireMonkey 控件有一个 Repaint
  • 在 Flutter/Dart 中如何将参数从命令行传递到 main ?

    如何运行命令并使用 Flutter Dart 传递一些自定义参数 以便可以在main 调用例如 flutter run device my custom arg 那么我可以通过以下方式访问它 void main List
  • 运行 Pig 脚本时的堆空间问题

    我正在尝试执行包含大约 3000 万数据的 Pig 脚本 但收到以下堆空间错误 gt ERROR 2998 Unhandled internal error Java heap space gt gt java lang OutOfMemo
  • 应将哪些文件导入到 Web 服务项目的 Subversion 存储库中?

    我使用Web服务自上而下的方法在Eclipse中创建了一个Java项目 即创建一个WSDL文件并使用它来生成带有axis2的Skeleton Java类和Web服务 因此 有很多自动生成的文件和axis2 jar图书馆 我的项目具有以下文件
  • 如何在 codeigniter 挂钩文件中加载模型

    这是我的问题 我正在构建一个需要过滤器的应用程序 我已经让过滤系统正常工作 我什至可以查明我当前想要访问的实际方法 问题是我无法从过滤器文件访问 CI 核心 我在网上搜索过 虽然我找到了一些建议的解决方案 例如 Dipping into C
  • @xmlschema jaxb package-info.java 编译错误

    我尝试在包级别使用注释 但从 Eclipse 中收到编译错误 我有课Head具有以下包 注释 javax xml bind annotation XmlSchema xmlns javax xml bind annotation XmlNs
  • Facebook 页面的 webhook [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在一页上拥有管理员访问权限 我创建了 facebook 应用程序 并在我的网站上创建并验证了 webhook 问题是我
  • Html.ListBoxFor错误问题asp.mvc 3

    我的代码中有类似的内容 但收到错误 异常详细信息 System ArgumentException 值不能为 null 或空 参数名称 名称 我究竟做错了什么 感谢帮助 model IEnumerable
  • 表单外的复选框

    由于设计要求 我需要在表单外部放置几个复选框 是否仍然可以将这些值包含在表单的提交操作中 也许用javascript或其他我没有想到的方式 如果您使用 HTML5 则有一个form属性 请参见以下示例 p p
  • 如何使用 web3.js 1.0 进行身份验证和发送合约方法

    我对如何使用 web3 1 0 库执行合约的方法感到困惑 此代码有效 只要我先手动解锁帐户 var contract new web3 eth Contract contractJson contractAddress contract m
  • 使用回车符迭代文件

    有没有办法使用语法迭代文本文件 with open filename r as f for line in f print f 如果文件仅包含回车符而没有换行符 到目前为止我能做的就是 with open filename r as f f
  • 我所有的 javascript 在底部添加了一些代码

    我的网站使用 CodeIgniter 今天我发现我的网站在所有 JavaScript 文件 包括 jQuery 文件 的底部添加了一些代码 代码是这样的 4fd970 You are blocked by day limit 4fd970
  • 无法签入 TFS 的更改

    我在尝试签入对 Visual Studio Online 上托管的 TFS 的更改时遇到问题 上周才开始 我在跑步Visual Studio Professional 2017版本15 5 2 当我尝试签入更改时 出现以下错误 C My W
  • 将属性绑定到列表视图数据模板内的元素

    我无法让数据绑定在DataTemplate以 Xamarin 形式 我可以让它与ListView 即绑定RowHeight 但一旦进入DataTemplate 将内容设置为我的 ViewModel 的属性没有任何影响 在下面的示例中 如果我
  • Sqlite计算查询中YYYYMMDD日期格式之间的天数差异

    我已经以 YYYYMMDD 格式存储了一些患者记录的治疗日期 tdate 和接收日期 rdate 我想查询rdate tdate结果小于30的记录 我的尝试是 SELECT FROM table WHERE rdate tdate lt 3
  • Matlab:获取图中点击的坐标但保留按钮回调

    我需要一个函数 它可以为我提供在图形窗口中单击的坐标以及单击的鼠标按钮 左 中 右或按下 KEY 的坐标 但我仍然想使用 uicontrol 按钮 我目前正在使用 ginput 它工作正常 但按钮回调函数没有执行 因此我认为 ginput
  • 将日期字符串转换为 Unix 时间戳

    我的日期是 Mon Mar 15 20 51 18 0000 2010 如何将此日期转换为 Unix 时间戳 require time Time parse Mon Mar 15 20 51 18 0000 2010 to i
  • 从 intellij 检查中排除目录,但不从自动完成中排除

    据我所知 排除目录的唯一方法是将其标记为在项目结构中排除 然而 这将使 IntelliJ 完全忽略该目录 因此它不会出现在自动完成选项中 我不想要这个 我希望排除在检查之外 但包含在其他一切中 这可能吗 我正在使用 Intellij 12
  • MySQL InnoDB - 对事务感到困惑

    我已经使用MySQL很多年了 但是没有太多使用InnoDB引擎的经验 我现在正在对它运行一些测试 因为我将要使用它 并且从我读到的内容来看 如果该事务中的任何查询存在任何问题 它不应该允许任何内容 通过 我的问题是 为什么在下面的代码中 当