java - 与 Google Cloud SQL 的连接间歇性断开

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

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

In your console click the project, on the left side click Storage > CloudSQL then click on your database name. You will see an 'Edit' button on top. Click that and scroll down to Activation Policy, change it to Always On and then click save.

但我仍然面临同样的问题。幸运的是,我一直在 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);

有没有人遇到同样的问题,求助

最佳答案

获得临时修复,在连接到 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

关于java - 与 Google Cloud SQL 的连接间歇性断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633515/

相关文章:

c# - MySQL charset=UTF-8 with ConnectionReset=True 不工作

python - 我可以同时运行的异步 urlfetch 调用的数量是否有限制?

java - Java中如何运行策略权限的小程序读取MAC地址

mysql - 字段列表中的列 'barcode' 不明确

java - 在 Linux 中使用 Java 运行 CPU 利用率命令

mysql - MySql 中多对多关系的问题

php - 不同应用程序之间的安全请求

python - 在 GAE 中公开模型的 "dumbed-down"只读实例

java - 非法的表达开始

java - 使用 fragment 中的自定义适配器和自定义行过滤 ListView