【问题标题】:Connection made to Google Cloud SQL drops intermittently与 Google Cloud SQL 的连接间歇性中断
【发布时间】:2016-01-06 12:45:38
【问题描述】:

我正在使用使用 Java-SQL 连接器的 Google Cloud SQL。我面临的问题是与数据库的连接意外断开。在谷歌搜索时,我遇到了这个question 并尝试了同一个问题中建议的解决方案。

在您的控制台中单击项目,在左侧单击Storage > CloudSQL,然后单击您的数据库名称。您会在顶部看到一个 '编辑' 按钮。点击它并向下滚动到Activation Policy,将其更改为Always On,然后点击save

但我仍然面临同样的问题。幸运的是,我一直在 Google App Engine 上保留日志,并附上了连接数据库时发生的异常的快照。

我在下面发布的代码要点用于建立与数据库的连接。

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);

有人遇到同样的问题吗,请帮忙

【问题讨论】:

  • 这种情况多久发生一次?你能发布一些日志的实际文本吗?通过mysql客户端而不是通过代码连接是否有效?
  • (1). 它经常发生 (2)。 com.webinterface.ConnectToDB connectDB: Connection not made=com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 这是我记录的异常 (3)。我在 Google App Engine 上安装了 phpmyadmin 以连接到 Cloud SQL db。它工作正常,通过代码建立连接时出现问题。
  • 这似乎应该发布到 Cloud SQL Public Issue Tracker 以及指向 github 存储库的链接,该链接可用于重现该行为以及可以采取哪些措施来触发它发生的描述.

标签: java mysql google-app-engine google-cloud-sql


【解决方案1】:

得到一个临时修复,在连接到 Google Cloud SQL 时使用了以下参数

url = "jdbc:google:mysql://my-app:mysql2/project-name?user=root&password=password&autoReconnect=true&failOverReadOnly=false&maxReconnects=10";

参考网址:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多