Laravel 截断 table 导致测试期间出错

Laravel truncating table causing error during test

我正在尝试 运行 分类 table,但每次我尝试通过测试 运行 它时,我都会收到 PDOException: There is no active transaction

我正在使用 RefreshDatabase 特征。

我的代码如下所示:

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

错误是由 truncate 操作引起的

基于

上的回答

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

这会影响 RefreshDatabase 特性,它对每个测试都使用一个事务。

这是它的运行方式

  1. RefreshDatabase 创建交易
  2. 你在这里用数据库做点什么
  3. 你执行truncate
  4. Truncate 提交事务
  5. RefreshDatabase 尝试提交事务但无法提交,因为它已经提交导致错误 There is no active transaction

尝试使用特征 DatabaseMigrations 而不是 RefreshDatabase