mysql - 为什么在MySQL 5 中运行脚本时start transaction 和rollback 无法回滚?

标签 mysql sql transactions

我有以下脚本...

START TRANSACTION;

INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-114, NULL, NULL, 'c21_1.jpg', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-115, NULL, NULL, 'c21_2.jpg', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-116, NULL, NULL, 'c21_3.jpg', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-117, NULL, NULL, 'c21_4.gif', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-118, NULL, NULL, 'c21_5.gif', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-119, NULL, NULL, 'c21_6.gif', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-120, NULL, NULL, 'c21_7.gif', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-121, NULL, NULL, 'AIRMILES_MIN_RBLUE.png', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-122, NULL, NULL, 'c21_logo_commercial-WHT.png', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-123, NULL, NULL, 'c21_logo_fhe_pms124-WHT.png', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-124, NULL, NULL, 'CENTURY-21-Logo-Century21.png', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-125, NULL, NULL, 'Easter-Seals-Logos-2005-008-1.png', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-126, NULL, NULL, 'Easter-Seals-Logos-2005-008-2.png', NULL);
INSERT INTO `Image` (`id`,`created`,`deleted`,`fileName`,`used`) VALUES (-127, NULL, NULL, 'kids-to-camp-EN.png', NULL);



INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -115);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -116);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -117);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -118);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -119);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -120);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -121);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -122);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -123);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -124);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -125);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -126);
INSERT INTO `AgencyImage` (`agency_id`,`image_id`) VALUES   (1, -127);


ROLLBACK;

我想在提交代码之前验证运行的脚本。然而,第一次运行时它没有回滚任何东西。

我做错了什么?

最佳答案

它是 MyISAM 表吗?如果是这样,您需要 switch to InnoDB如果你想使用事务。如果您从诸如 PHP 之类的东西运行查询,请确保您有 autocommit关闭。

关于mysql - 为什么在MySQL 5 中运行脚本时start transaction 和rollback 无法回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6181305/

相关文章:

c# - 从批处理语句中获取异常详细信息

c# - 从 C# 中的存储过程返回最后一个 SELECT 值

sql - 如果 where 条件为 !=?,则不使用数据库索引

sql - PostgreSQL INSERT INTO WITH 多个 SELECT

hibernate - 如何配置 Spring 使 JPA(Hibernate)和 JDBC(JdbcTemplate 或 MyBatis)共享同一个事务

java - 使用 spring4 @Transactional 时事务不起作用

c# - 如何在新的EXCEL表中写入数据

mysql - 您的 PHP 安装似乎缺少 WordPress 和建立数据库连接所需的 MySQL 扩展

php - 两个 SELECT 语句合并为一个 SQL

spring - 使用aspectj在Spring Boot中重试死锁事务