laravel - Laravel 截断表在测试期间导致错误
问题描述
我试图截断一个表,但每次我尝试通过测试运行它时,我都会得到一个 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
推荐阅读
- python - 如何使 python tkinter 匹配按钮到操作系统
- jquery - 从另一个属性调用对象属性中的函数
- php - 如何在多维数组的foreach循环中使用preg_replace?
- c# - 命名空间名称“设备”在命名空间中不存在
- java - 如何每n个字符剪切一个字符串?但只有在有空格时才会削减
- regex - 匹配字符串的各个部分
- node.js - MongoDB $jsonSchema 验证的正确语法
- java - java 11 HttpClient 导致无休止的 SSL 循环
- python - 每 10 分钟获取一个值并将其存储在 while 循环中
- reactjs - useState 中的函数错误为不是函数