【发布时间】:2021-08-12 13:16:03
【问题描述】:
刚刚在本地安装了 MySQL,并创建了一个数据库和一个简单的表。我现在正在尝试从 Google 表格连接到它,但它失败并出现错误:
{ [Exception: Invalid argument: url] name: 'Exception' } undefined
后来谷歌搜索了很多,似乎因为表格在谷歌服务器上运行,它无法将 localhost 解析为主机。
有没有办法解决这个问题?
var HOST = 'localhost';
var PORT = '3306';
var USERNAME = 'xxxx';
var PASSWORD = 'xxxx';
var DATABASE = 'investment';
var DB_TYPE = 'mysql';
var MAXROWS = 1000;
function testConnection(){
var sql = doc.getRange('query!a2').getDisplayValue();
var options = {};
}
function runSql(query, options) {
try {
var fullConnectionString = 'jdbc:' + DB_TYPE + '://' + HOST + ':' + PORT;
var conn = Jdbc.getConnection(fullConnectionString, USERNAME, PASSWORD);
Logger.log('conn :', conn);
Logger.log('query :', query);
var stmt = conn.createStatement();
stmt.execute('USE ' + DATABASE);
var start = new Date();
var stmt = conn.createStatement();
stmt.setMaxRows(MAXROWS);
var rs = stmt.executeQuery(query);
} catch (e) {
console.log(e, e.lineNumber);
Browser.msgBox(e);
return false;
}
}
只是想知道,如果我能找到一种在线获取我的 IPv4 地址的方法(因为我认为它是 DHCP,所以会定期更改),我可以使用像 101.146.72.23/localhost 这样的主机吗? (不是我的真实 IP)
[编辑]我尝试像上面那样添加我的 IPv4 地址,也许这让我更近了一步,因为现在我得到了一个不同的错误:
{ [Exception: Failed to establish a database connection. Check connection string, username and password.] name: 'Exception' } undefined
在阅读Google: JDBC 时,它指出“为了使用 JDBC 服务创建数据库连接,您必须在数据库设置中允许列出某些 IP 范围,以允许 Apps 脚本访问它。这些是您需要加入白名单的地址范围。"
现在正在搜索如何在 Windows 10 中执行此操作。
[编辑 2] 为需要执行此操作的任何其他人报告进度。按照@Julian Benavides 的建议,我找到了一个关于如何Add Port Forwarding on Telstra Smart Modem 的链接。这篇文章指出我的电脑需要一个静态 IP 地址(在本地网络上),How to Setup a Static IP Address on a Computer。
我认为我已经成功连接,但现在我必须弄清楚我为什么会出错:
Exception: Table 'investment.investment_type' doesn't exist
越来越近了,但还没有雪茄。
[编辑 3 - 成功!]我输入了错误的表名,现在可以使用了!
【问题讨论】:
标签: mysql google-apps-script google-sheets