2012-05-16 145 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