我正在尝试将Google表格数据保存在本地MySQL中。但是我收到一个无法建立连接的错误。
function writeToDb() {
var host = '127.0.0.1';
var port = '3306';
var db = 'test';
var url = "jdbc:mysql://" + host + ":" + port + "/" + db;
var data = getData();
var headerstring = data[1];
data = data[0];
try {
var conn = Jdbc.getConnection(url, "Outside", "Abc*234");
conn.setAutoCommit(false);
var sql = "INSERT INTO profile" + headerstring;
var stmt = conn.prepareStatement(sql);
for (var r in data) {
for (var c in data[r]) {
stmt.setString(parseInt(c) + 1, data[r][c]);
}
stmt.addBatch();
}
var batch = stmt.executeBatch();
conn.commit();
conn.close();
} catch (err) {
SpreadsheetApp.getActive().toast(err.message);
}
}
function getData() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Test1");
var data = sheet.getDataRange().getValues();
var header = data[0];
var headerstring = header.join(",");
headerstring = "(" + headerstring + ") values (";
var questions = Array(header.length + 1).join("?").split();
headerstring = headerstring + questions.join(",") + ")";
Logger.log(headerstring);
Logger.log(data.slice(1));
return [data.slice(1), headerstring];
}
它在Jdbc.getConnection(url,“ Outside”,“ Abc * 234”)附近失败;
我已授予用户“外部”访问权限,如下所示。
CREATE USER 'Outside'@'%' IDENTIFIED BY 'Abc*234';
GRANT ALL PRIVILEGES ON test.* TO 'Outside'@'%';
我在这里想念什么?
MySQL的版本是8.0
答案 0 :(得分:0)
我认为无法使用GAS JDBC连接到本地服务器。至少不是直接。您可能必须使用一些中间服务,才能通过安全隧道将服务器公开到公共网站,并使用该服务提供的任何凭据。