Ошибка Laravel Блокировка базы данных и разрыв транзакции
Кто-нибудь, помогите мне, пожалуйста! В моем проекте у меня есть транзакция с блокировкой записи:
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 ответ
Если вы используете 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();
}