google应用程序脚本jdbc/mysql:您不是线程错误的所有者

l7mqbcuq  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(342)

我有一个很长的查询,我正试图从谷歌应用程序脚本调用。查询长度很长,大约需要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;
}
kknvjkwl

kknvjkwl1#

显然,这里描述的sqlstatment有一个问题

ujv3wf0j

ujv3wf0j2#

所以看起来google把querytimeout改成了0,你可以在你的语句中使用setquerytimeout来设置它,这样就可以解决这个错误

相关问题