小编典典

由于超时或客户要求而取消的对帐单

sql

我正在尝试使用Google App脚本将数据添加到我的Google Cloud
SQL数据库中。我的代码昨晚结束时工作正常,但是今天早晨运行时,它现在给我错误“由于超时或客户端请求而取消了声明”,我在云控制台中遇到的错误是“得到了一个错误阅读信息”通信数据包”。

昨晚它正在处理大约1600行数据。我玩弄它并缩小了范围,以至于当15行多了时,就会发生错误。15行会很好地添加数据,将其更改为16行会引发错误,这告诉我这不是连接本身。我还通过将第15行复制到第16行并删除了所有其他数据来测试了电子表格中的数据,但这没有用。我对我读过的所有内容都表示正在超时感到困惑,主要是因为昨晚它可以正常处理1600行数据。我的代码如下:

function connection(folderId, db, c1, c2, c3, c4, c5, c6, c7) {
  var files = DriveApp.getFolderById(folderId).getFiles();
  var excelfile = files.next();
  var fileId = excelfile.getId();
  var data = SpreadsheetApp.openById(fileId).getSheetByName('Report 1');
  var last = data.getLastRow()
  var sheetdata=data.getRange("B5:H16").getValues();

  var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);//dburl is not defined

  conn.setAutoCommit(false); 
  var start = new Date();
  var stmt = conn.prepareStatement('INSERT INTO '+ db + ' ' + '('+c1+','+c2+','+c3+','+c4+','+c5+','+c6+','+c7+') values (?, ?, ?, ?, ?, ?, ?)');
  for (var i=0; i<sheetdata.length; i++) {
    stmt.setString(1, Utilities.formatDate(sheetdata[i][0], 'Etc/GMT', 'yyyy-MM-dd'));
    stmt.setString(2, sheetdata[i][1]);
    stmt.setString(3, sheetdata[i][2]);
    stmt.setString(4, sheetdata[i][3]);
    stmt.setString(5, sheetdata[i][4]);
    stmt.setString(6, sheetdata[i][5]);
    stmt.setString(7, sheetdata[i][6]);
    stmt.addBatch();
  }
      var batch = stmt.executeBatch();
      conn.commit();
      conn.close();

var end = new Date()
Logger.log('Time elapsed: %sms for %s rows.', end - start, batch.length);
}

阅读 142

收藏
2021-04-14

共1个答案

小编典典

发现问题出在新的App Script Runtime V8上。要解决此问题,请将运行时更改回Rhino。为此,请转到“查看>显示项目清单”,然后在其上显示“
runtimeVersion”:“ V8”,将其更改为“ runtimeVersion”:“
STABLE”。当前在此问题上存在一个未解决的错误:https
:
//issuetracker.google.com/issues/149413841

2021-04-14