首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel::事务不回滚异常

问Laravel::事务不回滚异常
EN

Stack Overflow用户
提问于 2014-07-24 23:26:30
回答 4查看 9.9K关注 0票数 15

对于Laravel4.2和DB::transaction,我有一个小问题。由于事务没有回滚,我遇到了问题,所以我尝试了最简单的代码片段,并将其放入routes.php中进行测试:

routes.php:

代码语言:javascript
复制
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

服务器坐在CentOs上,而本地机器是Windows 7。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-25 02:48:57

所以我在回答我自己的问题。InnoDb在MySql 5.5之前不是默认的存储引擎。在我的例子中,MYISAM是默认的存储引擎,不支持事务。我要做的是在我的CPanel服务器安装MySQL中启用MySQL。我必须确保我的Laravel迁移中的每个表都是用InnoDB引擎创建的。我是这样做的:

代码语言:javascript
复制
     $table->engine = "InnoDB"; 

到每个迁移文件。一旦使用InnoDB引擎设置了所有表,事务就会按预期工作。

票数 28
EN

Stack Overflow用户

发布于 2016-12-12 04:25:24

中的设置可以是另一种选择。

/config/database.php

将引擎值从null更改为InnoDB

代码语言:javascript
复制
'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => 'InnoDB',
        ],
票数 14
EN

Stack Overflow用户

发布于 2019-08-30 21:49:55

如果在项目中使用多个数据库,则需要指定要在哪个数据库中提交和回滚。

代码语言:javascript
复制
DB::connection('name_of_database')->beginTransaction();
try {
    //Do something
    DB::connection('name_of_database')->commit();
} catch (Exception $e) {
    DB::connection('name_of_database')->rollback();
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24945631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档