【发布时间】:2013-09-07 01:21:28
【问题描述】:
我有一个谷歌应用程序脚本在一个实例中运行,但不是另一个实例
两个脚本是相同的,我编写的唯一区别是 jdbc 查询。
这里是工作函数:
function wbk() {
var conn = Jdbc.getConnection("jdbc:mysql://aaa.aaaa.org:3306/aaaaa", "aaaa", "bbbbb");
var stmt = conn.createStatement();
stmt.setMaxRows(10000);
var start = new Date();
var rs = stmt.executeQuery("SELECT `DateUpdate`, `AllianceName`, `PlayerName`, `Score`, `Rank`, `TotalCities`, `FameTotal`, `FameRank`, `DefeatedTotal`, `DefeatedRank`, `PlunderTotal`, `PlunderRank` FROM `Member` WHERE AllianceID='2' OR AllianceID='48'");
var doc = SpreadsheetApp.getActiveSpreadsheet();
var first = doc.getSheetByName("WBK");
first.activate();
var cell = first.getRange('b2');
var row = 0;
while (rs.next()) {
for (var col = 0; col < rs.getMetaData().getColumnCount(); col++) {
cell.offset(row, col).setValue(rs.getString(col + 1));
}
row++;
}
rs.close();
stmt.close();
conn.close();
var end = new Date();
Logger.log("time took: " + (end.getTime() - start.getTime()));
};
我在更新数据库后运行了两次,结果很完美,符合预期。
现在,当我尝试使用相同的函数,并且只修改查询时(我检查了数据库中的 SQL 语句,这很好),函数失败。
这里是非工作函数。
function WC_Combined() {
var conn = Jdbc.getConnection("jdbc:mysql://aaa.aaaa.org:3306/aaaaa", "aaaa", "bbbbb");
var stmt = conn.createStatement();
stmt.setMaxRows(10000);
var start = new Date();
var rs = stmt.executeQuery("SELECT `DateUpdate`, `AllianceName`, `PlayerName`, `Score`, `Rank`, `TotalCities`, `FameTotal`, `FameRank`, `DefeatedTotal`, `DefeatedRank`, `PlunderTotal`, `PlunderRank` FROM `Member` where AllianceID='195' OR AllianceID='494'");
var doc = SpreadsheetApp.getActiveSpreadsheet();
var first = doc.getSheetByName("Combined");
first.activate();
var cell = first.getRange('b2');
var row = 0;
while (rs.next()) {
for (var col = 0; col < rs.getMetaData().getColumnCount(); col++) {
cell.offset(row, col).setValue(rs.getString(col + 1));
}
row++;
}
rs.close();
stmt.close();
conn.close();
var end = new Date();
Logger.log("time took: " + (end.getTime() - start.getTime()));
};
我在 Google 的调试控制台中收到的错误消息是
Service error: Spreadsheets (line 110, file "Code")
在我上面提供的第二个函数中,我的代码中的第 110 行是 cell.offset(row, col).setValue(rs.getString(col + 1));;我找不到第二个函数中的这一行与我提供的第一个示例之间的任何区别----并且它们在我第一次尝试运行它们时都有效。
任何想法,任何人?我什至没有使用自定义代码,代码基本上是谷歌应用程序文档示例。
我在 Google Docs 电子表格中使用 Google 脚本,连接到 mysql。我已经打开了到 mysql 的远程连接,并且有 2 个工作电子表格,所以我知道连接有效。
【问题讨论】:
标签: mysql sql jdbc google-apps-script