查询失败(使用 mssql_query() 和 php 时)
Posted
技术标签:
【中文标题】查询失败(使用 mssql_query() 和 php 时)【英文标题】:Query failed in (while using mssql_query() and php) 【发布时间】:2014-03-27 04:48:07 【问题描述】:我的查询:
$query_total = mssql_query("SELECT count(*) FROM table_name",$link);
上面的查询给出了错误日志:
php Warning: mssql_query() [<a href='function.mssql-query'>function.mssql-query</a>]: Query failed in ...
上述查询的计数预计约为 10 cr。
当我使用限制为 100 的相同查询时:
$query_total = mssql_query("SELECT top 100 * FROM table_name",$link);
上面的查询运行成功,给了我计数。
我试过了:
mssql_get_last_message()
,但我没有捕获任何日志。
set_time_limit(0);
ini_set("max_execution_time", 0);
ini_set("memory_limit","16M");
更新 1:
这个也试过了,
ini_set ( 'mssql.textlimit' , '65536' );
ini_set ( 'mssql.textsize' , '65536' );
还是不行。
请帮助我如何执行繁重的查询。
【问题讨论】:
【参考方案1】:我想我找到了解决方案:
我将内存限制增加到 512M,sql 超时到 10 分钟,然后我可以得到大约 100 行的计数。
ini_set('memory_limit', '512M');
ini_set('mssql.timeout', 60 * 10); // 10 min
【讨论】:
【参考方案2】:我不知道10cr是多少,真的,但是在sql server中似乎失败了。也许内存不足?如果你尝试 count(id) 怎么办? 请注意,您可能需要对 sql server 进行不同的配置才能使其正常工作。
【讨论】:
也试过count(id)
。它不起作用。 SQLServer 已经设置并在那里运行查询,大约需要 3 分钟的时间来获取 1 亿个计数
啊,谷歌来救援(我不知道 crore 是什么意思),所以它有 1 亿行。嗯,很多,还是有点奇怪,系统处理不了。一个想法:3 分钟的运行时间可能是这里的障碍 - 连接可能会在您得到响应之前简单地重置?还是立即返回?如果是后者,那我就迷惑了,对不起。
事实上,我冒昧地提出一个建议,您可能需要寻找处理这么多数据的替代方案 - sql server 和 php 可能不是最佳组合。环顾四周,其他人在使用 ms sql 中这么大的表时也会遇到类似的问题。
很抱歉,我们在印度仍有大量资金。我实际上是在尝试将数据从 mssql 同步到 mysql 数据库中。已创建脚本以一次批量获取 1000 行数据,以免服务器过载。
如何检查连接是否被重置?有什么想法吗?以上是关于查询失败(使用 mssql_query() 和 php 时)的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:未捕获的错误:调用未定义的函数 mssql_query() [重复]
LINQ to SQL查询基于使用外键与使用内置导航属性成功或失败