从 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 连接的主要内容,如果未能解决你的问题,请参考以下文章

已达到 MYSQL 连接限制 - JDBC 会自动关闭吗?

无法使用 JDBC 连接到 docker 中的本地 MySQL

如何从 SQL 脚本、JDBC 或 Spring JdbcTemplate 在 MySQL 中创建函数?

我可以从 JDBC 连接运行“源”命令(SQL 脚本)吗?

从 django app docker 连接到本地 mysql 数据库

IDEA使用JDBC连接MySQL数据库,看完就懂