2

收到错误:“无法建立数据库连接。检查连接字符串、用户名和密码。”如果我运行以下脚本。我可以通过 mysql 工作台在本地连接,但无法使用 googleapp 脚本连接。不知道我哪里错了。另外,如果我为电子表格编写脚本,我是否需要设置触发器。

function test() { 
  var conn = Jdbc.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root",""); 
  var stmt = conn.prepareStatement("SELECT * FROM info;"); 
  var dbList = stmt.executeQuery(); 
   dbList.next(); 
   var row = 0; 
  Logger.log("Start of Log:"); 
   while(dbList.next())
   { 
     Logger.log(dbList.getString(1)); 
     row++; 
   } 
  }

谢谢。

4

2 回答 2

4

好的,如果您在家中执行此操作并想在笔记本电脑上运行 google 应用程序脚本,请按照以下步骤操作您的本地 MYsql 数据库:-

1) 将笔记本电脑上的 3306 端口暴露在互联网上。

登录到您的路由器并将 3306 端口转发到您的笔记本电脑:- 如果您拥有 netgear 路由器,这是一个简短的 youtube 视频。基本上你在这里做的是;当在谷歌服务器上运行的谷歌脚本试图找到您的数据库时,它会在端口 3306 上访问路由器(公共 IP)。现在,此请求从那里路由到您的特定笔记本电脑。示例端口转发视频:- 端口转发视频

2)在任何计算机上使用用户名密码向任何人打开 M​​YSql 数据:- 在您的 MySQL 数据库上运行以下命令:-

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

3) 在以下行中使用您的公共 IP:- 所以不要使用 var conn = Jdbc.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root",""); 使用以下

var conn = Jdbc.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root","");

以防万一您像大多数人一样面临 IPV6 和 JDBC 兼容性问题。从以下地址获取您的公共 IP:- 获取我的 IPV4 地址

因此,不要使用 127.0.0.1 ,而是使用上述谷歌查询的结果

于 2015-06-28T22:38:05.347 回答
3

IP 地址127.0.0.1代表您的本地计算机。网络上的其他计算机无法使用它来访问您的计算机。请记住,Google Apps 脚本在 Google 的服务器上运行,因此,您需要提供它们可以访问的 IP 地址。

许多人犯的另一个常见错误是提供 192.168.xx 或类似的内部 IP 地址。因此,请提供外部计算机可访问的 IP 地址。

于 2013-07-03T05:59:16.237 回答