【发布时间】:2014-09-16 17:05:26
【问题描述】:
我在使用 Laravel 4.2 和 DB::transaction 时遇到了这个小问题。我遇到了事务没有回滚的问题,所以我尝试了最简单的 sn-p 代码并将其放入 routes.php 以进行测试:
routes.php:
DB::transaction(function(){
$user = App::make("User");
$user->save();
throw new Exception("Should not create users");
});
...
...
...
Some other code here
我只是尝试在事务关闭中创建用户,并在创建用户后抛出异常以强制回滚事务。我的问题是,即使抛出异常,事务也不会回滚。每次刷新应用程序时,我都会在数据库中获得新用户。相同的代码在本地机器上按预期工作,但在我计划用于生产的服务器上,它根本不会回滚事务。你有什么想法为什么?
编辑:
服务器 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。
【问题讨论】:
-
您在本地和生产环境中是否有相同版本的 PHP 和 MySQL(或您正在使用的任何其他数据库)?
-
为反映两种环境而进行的编辑。
标签: php mysql database laravel