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 中会有效果?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6
梦之马

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

4年前 评论
梦之马

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

4年前 评论

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

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

区别是

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

锁住一行(支持高并发)

4年前 评论

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

4年前 评论

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

4年前 评论

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

8个月前 评论

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