php – Laravel DB ::事务没有回滚异常

我在Laravel 4.2和DB :: transaction中遇到了这个小问题.我遇到了没有回滚的事务的问题,所以我尝试了最简单的代码片段并将其放入routes.php中进行测试:

routes.php文件:

DB::transaction(function(){

  $user = App::make("User");
  $user->save();
  throw new Exception("Should not create users");
});
...
...
... 
Some other code here

我只是尝试在事务闭包中创建用户,并在创建用户之后抛出异常以强制回滚事务.我的问题是,即使抛出异常,事务也不会回滚.每次刷新应用程序时,我都会在数据库中获得新用户.相同的代码在本地计算机上按预期工作,但在我计划用于生产的服务器上,它只是不会回滚事务.你有什么想法吗?

编辑:

Server MySql:5.1.73-cll – MySQL社区服务器(GPLv2)

服务器PHP:PHP 5.4.30(cli)(内置:2014年7月19日15:22:18)

本地PHP:5.5.9

本地MySql:5.6.16

服务器位于CentO上,而本地计算机是Windows 7.

所以我回答了我自己的问题.在MySql 5.5之前,InnoDb不是默认的存储引擎.在我的情况下,MYISAM是默认的存储引擎,不支持交易.我必须做的是在我的CPanel服务器安装MySQL中启用InnoDB.我必须确保我的Laravel迁移中的每个表都是使用InnoDB引擎创建的.我这样做是通过添加:
$table->engine = "InnoDB";

到每个迁移文件.使用InnoDB引擎设置所有表后,事务按预期工作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载
为什么laravel比yii火
一些常见的Laravel定时任务不运行的问题
laravel用路由有什么好处
composer无法安装laravel怎么办
laravel现在还用吗
laravel怎么替换主键id
laravel的appurl有什么用
如何修改Laravel的报错输出形式
laravel怎么避免foreach查表
laravel怎样操作数据库
laravel怎么截取字符串
laravel 是国内的吗
laravel怎么设置请求头
浅析Laravel社区Redis组件报错的问题和解决方法