谷歌应用程序脚本JDBC/MySql:你不是线程错误的所有者



我有一个长查询,我正试图从谷歌应用程序脚本中调用。查询长度很长,执行大约需要20秒。

它以前工作得很好,但突然我开始收到:"由于超时或客户端请求,语句被取消。

由于超时错误是在调用executeQuery()之后立即出现的,我认为查询长度是问题所在,所以我将其添加到存储过程中。

新查询只是对过程的调用。现在我得到了you are not owner of thread错误,由于某种原因,它看起来像是Google App Script发送的KILL命令。

这是我运行查询的函数:

function runQuery(query, params, isUpdate) {
var conn = Jdbc.getConnection(dbUrl, username, password);
var statement = conn.prepareStatement(query);
if (params)
{
for (var i=0; i<params.length; i++)
{
var value = params[i];
var index = i+1;    
if (!isNaN(value))
statement.setInt(index, parseInt(value));
else
statement.setString(index, value);
}
}
var results = !isUpdate ? statement.executeQuery() : statement.executeUpdate();
if (isUpdate)
return results;
var numCols = results.getMetaData().getColumnCount();       
var resultsArray = processResults(results);
results.close();
statement.close();
return resultsArray;
}

所以看起来Google将queryTimeout更改为0你可以在你的语句上使用setQueryTimeout来设置它,这将解决错误

显然,SqlStatment存在问题,如所述

最新更新