2016-01-06 76 views
2

我使用的是谷歌的Cloud SQL使用Java-SQL連接器。我面臨的問題是與數據庫的連接意外地下降。當谷歌搜索時,我遇到了這個question,並嘗試了同一問題中提出的解決方案。連接中斷間歇

在控制檯中單擊項目,在左側點擊存儲> CLOUDSQL然後點擊數據庫名稱。您將在頂部看到一個'編輯'按鈕。單擊向下滾動到激活策略,始終將其更改爲然後單擊保存

但我仍然面臨着同樣的問題。幸運的是,我一直在Google App Engine上保存日誌,並附加了連接到數據庫時發生的異常的快照。代碼

Google App Engine Log For Cloud SQL connection drop

要點,我已經貼在下面用於建立連接到數據庫。

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.util.StringTokenizer; 
import java.util.logging.Logger; 

import com.google.appengine.api.utils.SystemProperty; 
import static com.google.appengine.api.utils.SystemProperty.environment; 
import static com.google.appengine.api.utils.SystemProperty.Environment.Value.Development; 
import static com.google.appengine.api.utils.SystemProperty.Environment.Value.Production; 

Connection con=null; 
SystemProperty.Environment.Value env = environment.value(); 
    if(env == Production) 
    { 
     System.out.println("Inside Production Phase"); 
     // Load the class that provides the new "jdbc:google:mysql://" prefix. 
     Class.forName("com.mysql.jdbc.GoogleDriver"); 
     url = "jdbc:google:mysql://<my-project-id>:<cloud-sql-instance>/<database-name>?user=<user-name>&password=<database-password>&useUnicode=true&characterEncoding=UTF-8"; 
    }//if 
    else if(env == Development) 
    { 
     System.out.println("Inside Development Phase"); 
     // This will load the MySQL driver, each DB has its own driver 
     Class.forName("com.mysql.jdbc.Driver"); 
     url = "jdbc:mysql://127.0.0.1:3306/<database-name>?user=root"; 
    }//else if 
    con = DriverManager.getConnection(url); 

是否有人面臨同樣的問題,請大家幫忙。

+0

多久會出現這種情況?你能發佈一些日誌的實際文字嗎?它是否可以通過mysql客戶端連接,而不是通過代碼連接? – Nick

+1

(1)。它經常發生 (2)。 'com.webinterface.ConnectToDB connectDB:連接沒有做出= com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信鏈路故障 成功發送到服務器的最後一個數據包爲0毫秒前。司機還沒有從server.' 收到任何數據包,這是我所記錄的 (3)安裝.I've的phpmyadmin在谷歌應用程序引擎用於連接到雲SQL數據庫例外。它工作正常,通過代碼進行連接時發生問題。 –

+0

這似乎喜歡的事,應該貼到[Cloud SQL的公開問題追蹤](https://code.google.com/p/googlecloudsql/issues/list)與到GitHub庫的鏈接可用於沿重現行爲並描述可以做些什麼來觸發它的發生。 – Nick

回答