我有一个很长的查询,我正试图从谷歌应用程序脚本调用。查询长度很长,大约需要20秒才能执行。
它以前工作得很好,但突然我开始收到:由于超时或客户端请求,语句被取消。 因为超时错误紧接着
executeQuery()我认为查询长度是问题所在,所以我将其添加到存储过程中。 新查询只是对过程的调用。现在我明白了
you are not owner of thread错误,看起来像
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;
}
2条答案
按热度按时间kknvjkwl1#
显然,这里描述的sqlstatment有一个问题
ujv3wf0j2#
所以看起来google把querytimeout改成了0,你可以在你的语句中使用setquerytimeout来设置它,这样就可以解决这个错误