【问题标题】:Receiving socket error while connecting to cloud SQL连接到云 SQL 时收到套接字错误
【发布时间】:2017-07-30 11:30:07
【问题描述】:

我正在尝试使用 android studio 连接到云 SQL。收到此错误

07-30 16:51:12.511 23120-23120/com.example.pratyush.geofencing W/System.err: java.sql.SQLException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/cloud/sql/mysql/SslSocketFactory;

我的代码:

public void getDatafromSQL() {
    Log.d("GeoL", "getSQL");
    Connection connection;
    String query = "Some query";
    try {
        String databaseName = "dbName";

        String instanceConnectionName = "instnce name";

        String jdbcUrl = String.format(
                "jdbc:mysql://google/%s?cloudSqlInstance=%s&"
                        + "socketFactory=com.google.cloud.sql.mysql.SocketFactory",
                databaseName,
                instanceConnectionName);
        connection = DriverManager.getConnection(jdbcUrl, "user", "pwd");

        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(query);
        Log.d("GeoL", String.valueOf(resultSet));
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

我正在使用 mysql 连接器 jar 和 mysql 套接字工厂 jar 作为依赖项。

我也无法使用 compile 'com.google.cloud.sql:mysql-socket-factory:1.0.3' 作为依赖项。

请帮忙。

提前致谢。

【问题讨论】:

    标签: android sockets google-app-engine google-cloud-sql


    【解决方案1】:

    该库包含多个 jar。如果您手动添加 jar,则还需要添加其依赖项(例如 jdbc-socket-factory-core jar,可能还有其他)。

    话虽如此,您真的不应该手动打包 jar,因为这是一个乏味且容易出错的过程。

    最后,除非这是您自己的玩具应用程序,否则您不应从移动应用程序直接连接到数据库。您实际上是在向拥有该应用副本的任何人提供对您数据库的直接访问权限。

    【讨论】:

      猜你喜欢
      • 2017-01-21
      • 2021-03-27
      • 2021-04-24
      • 2016-01-10
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 2016-09-12
      • 2014-12-08
      相关资源
      最近更新 更多