MySQL 存储引擎是 myisam,Laravel 的事务还有效?

问题出现情况,
最近用java重写了PHP的代码,发现代码里面用了事务。
大概是在一张表里面插入一条数据获得自增id,这个id更新另外表的一个字段

      try {
            DB::beginTransaction();
            //此处是sql
            DB::commit();
        }catch(\Exception $e){
            DB::rollback();
            return false;
        }

后来发现在java中事务没有效果,java解释说,mysql的myisam是不支持事务的,所以在java中加了事务也没有效果。
然后我查了mysql官网确实 myisam 不支持事务
https://dev.mysql.com/doc/refman/5.7/en/st...

我想问这个事务在 laravel 中会有效果?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
梦之马

laravel 的事务 最后走的是 PDO的
事务会在不支持的数据库返回false,所以对于myisam来说没有事务,最后结果是false
参考资料:
https://github.com/JetBrains/phpstorm-stub...
https://blog.csdn.net/jiuyue9561/article/d...

5年前 评论
梦之马

laravel 的事务 最后走的是 PDO的
事务会在不支持的数据库返回false,所以对于myisam来说没有事务,最后结果是false
参考资料:
https://github.com/JetBrains/phpstorm-stub...
https://blog.csdn.net/jiuyue9561/article/d...

5年前 评论

myisan 有表锁, innodb 支持事务(网上一大堆)

额, 平时用的事务是行级锁, myisan 是表级锁,

区别是

锁住整个表(支持高并发)

锁住一行(支持高并发)

5年前 评论

这个是数据库表引擎问题,换任何语言、框架都不支持

5年前 评论

这个归根结底还是看数据库引擎,和语言/框架无关

5年前 评论

mysql默认存储引擎是myisam时,事务回滚那些是不支持的
mysql默认存储引擎是innodb时,指定单独表的存储引擎是myisam时也不支持
myisam不回滚删除插入的数据
innodb事务回滚时id是被用掉的

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!