MSSQL查询超出php中允许的内存


MSSQL Query exceeding allowed memory in php

我有一个查询,在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)