我在使用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
我试图在一个事务闭包中创建用户,当创建完用户后,我抛出异常来强制回滚事务。但是即使抛出异常,事务也不会回滚。每次刷新应用程序时,在数据库中都会得到一个新的用户。这段代码在本地机器上按预期工作,但在我计划用于生产的服务器上却无法回滚事务。你有任何想法为什么吗?编辑:
服务器 MySql 版本为 5.1.73-cll - MySQL Community Server (GPLv2)
服务器 PHP 版本为 PHP 5.4.30 (cli) (built: Jul 19 2014 15:22:18)
本地 PHP 版本为 5.5.9
本地 MySql 版本为 5.6.16
服务器运行在 CentOS 上,而本地机器是 Windows 7。