2012-05-16 146 views
0

我想填补MySQL数据库查询的输出一个谷歌的电子表格单元格,所以我写了这个简单的脚本按照谷歌的教程中的例子:JDBC连接错误

function get_tbs_number() { 
    var conn = Jdbc.getConnection("jdbc:mysql://127.0.0.1:9008/icadata"); 
    var stmt = conn.createStatement(); 
    stmt.setMaxRows(100); 
    var start = new Date(); 
    var rs = stmt.executeQuery("select count(*) from CNGSfiltered where run=10269 and (GTO1>4 or GTO2>4 or GTO3>4 or GTO4>4);"); 
    var doc = SpreadsheetApp.getActiveSpreadsheet(); 
    var cell = doc.getRange('a1'); 
    cell.offset(0, 0).setValue(rs.getString(1)); 
    rs.close(); 
    stmt.close(); 
    conn.close(); 
    var end = new Date(); 
    Logger.log("time took: " + (end.getTime() - start.getTime())); 
} 

问题是当我尝试运行脚本时,获取连接到数据库的错误,而从命令行(mysql -h localhost -P 9008 -u#-p#icadata)连接到同一数据库的确可行。

+2

你能发布一些像堆栈跟踪信息吗? – Jeshurun

+0

你混合Java和Javascript? – ChadNC

+0

你是否在网页浏览器中运行这段代码?你尝试从本地机器连接到MySQL数据库吗? – WeMakeSoftware

回答

0

问题是谷歌无法达到127.0.0.1。尝试在你的路由器上打开你的mysql端口(9008)。然后使用www.whatismyip.com获取您的公共IP地址。

"jdbc:mysql://<myPublicIP>:9008/icadata" 

然后,您可能必须运行包含Google IP或使用%(不是非常安全)的sql grant命令。

grant all on icadata.* to '<user>'@'<google ips>' identified by '<password>'; 

祝你好运!这里有一些参考:https://developers.google.com/apps-script/jdbc