我有一个使用stuff()的查询在PHP中使用时由于内存不足而失败。
此行发生错误;
$data = odbc_exec($conn, $query);
此时php实际上并没有收到任何只是分配网络资源的数据。连接很好,我在其他地方使用它,查询strlen只有~400。
那么这里究竟发生了什么?
select oeename.id, oeename.Name, stuff(
(select distinct ', ' + departmentequipment.name from type join DepartmentEquipment on departmentequipmentfk = departmentequipment.id where type.OEENameFK = oeename.ID order by ', ' + departmentequipment.name for xml path('')) ,1,1,'') as departmentequipmentnames
from oeename order by oeename.name asc
即使我在查询中添加前1,查询仍然超出了内存限制。
编辑:php脚本之前正在运行,有人在我的网站的某个相关部分检测到了一个错误,并且在尝试查找问题时我在本地开发服务器上遇到了这个问题。该表现在部分更大,但它没有执行而不是读取数据。答案 0 :(得分:1)
我相信你遇到了这个错误:https://bugs.php.net/bug.php?id=68964
要总结解决方法,您需要将ntext
个字段转换为nvarchar(max)
。