1、创建表时指定了引擎为MyISAM。
2、某些操作为了提高效率,使用了事务提交。
3、MyISAM不支持事务,但是事务语句没有失败。
原因:当你在 MyISAM 表上执行包含 START TRANSACTION;
、INSERT INTO ...;
和 COMMIT;
的语句时,这些语句本身在语法上是正确的,因此 MySQL 会正常执行这些命令。INSERT INTO ...;
语句会立即执行并影响表,而 START TRANSACTION;
和 COMMIT;
虽然被执行,但对于 MyISAM 表实际上没有任何作用,它们不会产生事务控制的行为。因此,即便是在 MyISAM 表上,这样的命令序列也会"成功"执行,但成功的含义仅限于语法上的正确和 INSERT
操作的完成,并不意味着事务被正确处理。
如果你需要事务支持,建议使用支持事务的存储引擎,如 InnoDB。InnoDB 是 MySQL 的默认存储引擎,它提供了完整的 ACID 事务支持,适用于需要高可靠性和事务处理特性的应用场景。