Laravel错误锁定数据库与事务中断

时间:2017-06-26 06:58:14

标签: php mysql laravel locking pessimistic

请帮助我! 在我的项目中,我有锁记录交易:

namespace App\Console\Commands;

use Illuminate\Console\Command;

class Testing extends Command {
    protected function handling()
    {
        DB::beginTransaction();
        try {
            $posts = Posts::lockForUpdate()->find(1);

            //run step 1

            //run step 2

            //run step 3

        } catch (\Exception $e) {
            DB::rollback();
        }
    }
}

在我的情况下,我在命令运行时调用它:

php artisan test:run

...
running step 1
...
...
running step 2
..
..
Ctrl C

-> quit command.

交易未提交并永久锁定记录。

我可以在命令强制退出时提交事务吗?

1 个答案:

答案 0 :(得分:0)

如果您使用DB::beginTransaction();,则需要使用DB:commit();作为

提交
DB::beginTransaction();
        try {
            $posts = Posts::lockForUpdate()->find(1);

            //run step 1

            //run step 2

            //run step 3
            DB::commit();

        } catch (\Exception $e) {
            DB::rollback();
        }