【问题标题】:Server error based on the amount of data returned in an ASP classic ODBC query基于 ASP 经典 ODBC 查询中返回的数据量的服务器错误
【发布时间】:2019-10-02 15:17:24
【问题描述】:

当我执行 ASP Classic (ODBC) SQL 查询时,出现消息“处理 URL 时服务器上发生错误...”。是否显示错误消息取决于查询将返回的数据量。该错误仅在我从 asp 执行查询时发生,而不是从 phpMyAdmin 执行时发生。

我可以毫无错误地执行这个:

SELECT * FROM `customers` LIMIT 500

但是,下一个查询会导致“处理 URL 时服务器发生错误。请联系系统管理员。如果您是系统管理员,请单击此处了解有关此错误的更多信息。”

SELECT * FROM `customers` 

上述查询将返回约 3200 条记录,每条记录包含 27 个字段。

上述错误消息中的“此处”链接指向“https://docs.microsoft.com/en-us/iis/application-frameworks/running-classic-asp-applications-on-iis-7-and-iis-8/classic-asp-not-installed-by-default-on-iis”,这意味着未安装 ASP。它显然已安装,因为我可以执行上一个查询,其中包括结果的 LIMIT。

如果我在 SQL 查询中试错 LIMIT,我发现我可以执行这个:

SELECT * FROM `customers` LIMIT 702

但是下一个查询会导致错误:

SELECT * FROM `customers` LIMIT 703

LIMIT 与 SQL 查询返回的字段数有关。例如,我可以执行以下任一查询(它们几乎相同,但一个包括城市,一个包括邮政编码):

SELECT CustomerID, Name, Address1, Address2, City FROM `customers`
SELECT CustomerID, Name, Address1, Address2, State FROM `customers`

上述两个查询都返回约 3100 条记录,其中包含 5 个字段。

但是,我无法执行下一个查询,该查询将为相同的 ~3100 条记录返回 6 个字段:

SELECT CustomerID, Name, Address1, Address2, City, State FROM `customers`

真的感觉好像记录数乘以字段数是有限制的。

我正在使用共享托管服务。我想知道他们是否有一个设置会导致这个错误。我以前的主人没有遇到过这种情况。

谢谢!

【问题讨论】:

  • 当您实际调用数据库时,或者当您尝试遍历它(例如输出到屏幕)时,是否会发生错误?
  • 遍历记录集时。我的主机启用了更详细的错误报告,并发现它溢出了响应缓冲区。我正在调查这个:stackoverflow.com/questions/4968006/…

标签: mysql asp-classic recordset


【解决方案1】:

ASP 缓存页面内容,您可能已经达到缓存大小的限制。您所要做的就是偶尔转储缓存。我使用这样的东西:

x = x+1
if x mod 500 = 0 then
    Response.Flush
end if

把它放在迭代每条记录的循环的末尾(在循环内)。每 500 条记录它会将缓存转储到输出,然后继续。

(另一种选择是增加缓存大小,但我相信上面是更好的选择。不需要不必要地增加服务器上的负载。)

【讨论】:

  • 谢谢,斯蒂芬。那行得通!另一个解决方案(根据另一个线程)是在文件顶部添加“Response.Buffer = False”。
  • 对。这会完全关闭缓冲区
猜你喜欢
  • 2023-03-24
  • 2019-06-26
  • 2013-11-03
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多