0

我试图截断一个表,但每次我尝试通过测试运行它时,我都会得到一个 PDOException: There is no active transaction

我正在使用该RefreshDatabase特征。

我的代码如下所示:

Model::query()->truncate();
4

2 回答 2

5

错误是由truncate操作引起的

基于https://stackoverflow.com/a/1522974/6644975上的答案

当您执行truncate语句时,事务被提交,然后 TRUNCATE 被执行并且无法撤消。

这会影响RefreshDatabase为每个测试使用事务的特征。

这是它的运行方式

  1. RefreshDatabase创建交易
  2. 你在这里对数据库做一些事情
  3. 你执行truncate
  4. Truncate提交事务
  5. RefreshDatabase尝试提交事务但无法提交,因为它已经提交导致错误There is no active transaction
于 2021-03-30T02:40:24.693 回答
0

尝试使用 traitDatabaseMigrations而不是RefreshDatabase

于 2021-10-01T09:10:26.540 回答