为什么在MySQL 5中运行脚本时启动事务和回滚失败?

为什么在MySQL 5中运行脚本时启动事务和回滚失败?,mysql,sql,transactions,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); I

我有以下脚本

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表吗?如果是这样,那么如果您想使用事务,就需要这样做。如果您运行的是类似PHP的查询,请确保已关闭。

这是MyISAM表吗?如果是这样,那么如果您想使用事务,就需要这样做。如果您正在运行PHP之类的查询,请确保已关闭。

为什么您认为自己做错了什么?因为如果他在回滚后使用事务存储引擎(如InnoDB);在底部,行将不存在。King Skippus,请不要做出愚蠢的评论。你为什么认为你做错了什么?因为如果他在回滚后使用事务存储引擎(例如InnoDB);在底部,行将不存在。King Skippus,请不要做出愚蠢的评论。我正在从IDE中内置的Intellij查询工具运行它。创建表时,请尝试将ENGINE=InnoDB放在末尾。例如:创建表(/*列定义*/)引擎=InnoDB;如果可以的话,您以前使用的是非事务引擎(可能是MyISAM)。我对Intellij一无所知;如果它有一个用于创建表的GUI,请检查是否有一个选项可以将它们创建为InnoDB表而不是MyISAM。我有一个鬼鬼祟祟的怀疑,就是发生了什么。顺便说一下,如果你想让所有的表和数据库默认使用YNODB而不是MyISAM,这样你的事务总是被启用,考虑改变你的My.CONF文件中的默认存储引擎。自动提交不需要关闭。如果使用
start transaction
启动事务,则自动提交的状态不相关。提交/回滚后,将重新启用自动提交。如果关闭自动提交,则需要在每次插入/删除/更新后进行手动提交,否则将不会发生任何事情。我正在从IDE中内置的Intellij查询工具运行它。创建表时,请尝试将ENGINE=InnoDB放在末尾。例如:创建表(/*列定义*/)引擎=InnoDB;如果可以的话,您以前使用的是非事务引擎(可能是MyISAM)。我对Intellij一无所知;如果它有一个用于创建表的GUI,请检查是否有一个选项可以将它们创建为InnoDB表而不是MyISAM。我有一个鬼鬼祟祟的怀疑,就是发生了什么。顺便说一下,如果你想让所有的表和数据库默认使用YNODB而不是MyISAM,这样你的事务总是被启用,考虑改变你的My.CONF文件中的默认存储引擎。自动提交不需要关闭。如果使用
start transaction
启动事务,则自动提交的状态不相关。提交/回滚后,将重新启用自动提交。如果关闭自动提交,则需要在每次插入/删除/更新后进行手动提交,否则不会发生任何事情。