这个问题已经困扰我几个月了,而且我还没有找到解决方案。
默认max_execution_time
在经典 ASP 应用程序中使用 MySQL ODBC 连接器 (8.0) 时,设置为 30000 毫秒(30 秒),但我不知道如何增加它。
我有一个大表(400,000 多行),我正在使用UPDATE
命令每天多次执行各种计算,通常这需要不到 30 秒,但随着表的不断增长,我开始看到越来越多[MySQL][ODBC 8.0(w) Driver][mysqld-8.0.15]Query execution was interrupted, maximum statement execution time exceeded
正在记录错误。
在寻找解决方案时,我不断遇到相同的答案:
这些解决方案工作正常,但仅当您使用 MySQL 客户端(例如 MySQL Workbench)时才有效,但在经典 ASP 应用程序中使用 ODBC 连接器时它们没有任何区别。
下面的代码总是会输出max_execution_time: 30000
Dim dbConn, dbRS
Set dbConn = Server.CreateObject("ADODB.Connection") : dbConn.Open("DSN=my_system_dsn")
Set dbRS = dbConn.Execute("SHOW VARIABLES WHERE Variable_name = 'max_execution_time';")
Response.Write(dbRS("Variable_name") & ": " & dbRS("Value"))
dbRS.close() : Set dbRS = nothing
dbConn.close() : Set dbConn = nothing
我遇到的另一个解决方案是使用:
SELECT /*+ MAX_EXECUTION_TIME(x) */ FROM TABLE...
但这仅适用于只读 SELECT 语句,不适用于 UPDATE 命令。
我改变什么似乎并不重要,无论是在MySQL ODBC数据源配置中,连接字符串的更改,还是MySQL ini文件中,max_execution_time
在经典 ASP 中使用 ODBC 连接器访问 MySQL 时,保持在 30000ms。
我确实找到了以下错误报告和讨论 https://bugs.mysql.com/bug.php?id=81071在 2016 年的 MySQL 网站上,人们报告了 ODBC 5.x 连接器与经典 ASP 一起使用时出现的相同问题,但没有人能够提供解决方案。
我只是想知道是否有其他人遇到过这个问题并且能够找到一种方法来增加max_execution_time
value?
解决方案感谢@Shadow
Dim dbConn, dbRS
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.Open("DSN=my_system_dsn")
dbConn.CommandTimeout = 120
Set dbRS = dbConn.Execute("SHOW VARIABLES WHERE Variable_name = 'max_execution_time';")
Response.Write(dbRS("Variable_name") & ": " & dbRS("Value"))
dbRS.close() : Set dbRS = nothing
dbConn.close() : Set dbConn = nothing
Output: max_execution_time: 120000