我试图截断一个表,但每次我尝试通过测试运行它时,我都会得到一个 PDOException:
There is no active transaction
我正在使用该RefreshDatabase
特征。
我的代码如下所示:
Model::query()->truncate();
我试图截断一个表,但每次我尝试通过测试运行它时,我都会得到一个 PDOException:
There is no active transaction
我正在使用该RefreshDatabase
特征。
我的代码如下所示:
Model::query()->truncate();
错误是由truncate
操作引起的
基于https://stackoverflow.com/a/1522974/6644975上的答案
当您执行truncate
语句时,事务被提交,然后 TRUNCATE 被执行并且无法撤消。
这会影响RefreshDatabase
为每个测试使用事务的特征。
这是它的运行方式
RefreshDatabase
创建交易truncate
Truncate
提交事务RefreshDatabase
尝试提交事务但无法提交,因为它已经提交导致错误There is no active transaction
尝试使用 traitDatabaseMigrations
而不是RefreshDatabase