从 App 脚本到本地 MySQL 的 JDBC 连接
Posted
技术标签:
【中文标题】从 App 脚本到本地 MySQL 的 JDBC 连接【英文标题】:JDBC Connection from App script to local MySQL 【发布时间】:2019-07-27 00:05:13 【问题描述】:我正在尝试将我的 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
【问题讨论】:
【参考方案1】:我不相信它可以使用 GAS JDBC 连接到您的本地服务器。至少不是直接的。您可能必须使用一些中介服务通过安全隧道将您的服务器公开给公共网络,并使用该服务提供的任何凭据。
【讨论】:
以上是关于从 App 脚本到本地 MySQL 的 JDBC 连接的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 JDBC 连接到 docker 中的本地 MySQL
如何从 SQL 脚本、JDBC 或 Spring JdbcTemplate 在 MySQL 中创建函数?