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

MSSQL查询超出php中允许的内存,php,sql-server,Php,Sql Server,我有一个查询,在PHP中使用stuff()时,由于内存不足而失败 错误发生在这一行上 $data = odbc_exec($conn, $query); 在这一点上,php实际上并没有接收任何数据,它只是分配了一个网络资源。连接很好,我在其他地方都使用它,查询strlen只有~400 那么这里到底发生了什么 select oeename.id, oeename.Name, stuff( (select distinct ', ' + departmentequipment.name

我有一个查询,在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脚本以前工作正常,有人在我的网站的某个相关部分检测到一个bug,在尝试查找问题时,我在本地开发服务器上遇到了这个问题。表现在部分变大了,但它在exec上失败,而不是在中读取数据。

我相信您遇到了以下错误:


要总结解决方法,您需要将任何
ntext
字段强制转换为
nvarchar(max)

例如,您是说在SSMS中运行查询没有问题吗?确实,在SSMSD中查询运行得很好。运行查询时,您的计算机或SQL server上的内存是否出现任何峰值?您的PHP环境是否位于另一个内存较少的盒子上?可能您遇到了这个错误:将这些内容转换为varchar(max)似乎可以解决这个问题。这将表明你发现的bug是罪魁祸首。科里,如果你想发布一个答案,我会把它标记为正确。