【发布时间】:2017-10-07 06:41:07
【问题描述】:
我正在运行laravel 5.4 并注意到事务中的回滚不起作用。我在settings.php 文件中将我的数据库引擎设置为InnoDB,并尝试了DB::rollback(); 和DB::rollBack();(即大写和小写b),但它没有回滚我的数据库。
我在下面写了一个单元测试。它创建一个记录,提交它,然后回滚。但是,最后一个断言失败。回滚后,该记录仍可在数据库中找到。有什么我想念的吗?还是laravel有bug?
public function testRollback()
{
$this->artisan('migrate:refresh', [
'--seed' => '1'
]);
DB::beginTransaction();
Season::create(['start_date' => Carbon::now(), 'end_date' => Carbon::now(),]);
DB::commit();
$this->assertDatabaseHas('seasons', [
'start_date' => Carbon::now(), 'end_date' => Carbon::now(),
]);
DB::rollBack();
// This assertion fails. It still finds the record after calling roll back
$this->assertDatabaseMissing('seasons', [
'start_date' => Carbon::now(), 'end_date' => Carbon::now(),
]);
}
【问题讨论】:
标签: php mysql laravel transactions