我有一个查询,在PHP中使用stuff()时,由于内存不足而失败。
该错误发生在该行上;
$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
即使我将top 1添加到查询中,查询仍然超过内存限制。
编辑:php脚本以前是工作的,有人在我网站的某个相关部分检测到了一个错误,在尝试错误查找问题时,我在本地开发服务器上遇到了这个问题。该表现在大了一部分,但在exec而不是读取中的数据时失败了。
我相信您遇到了这个错误:https://bugs.php.net/bug.php?id=68964
为了总结解决方法,您需要将任何ntext
字段强制转换为nvarchar(max)
。