【问题标题】:ClassNotFoundException: Google Cloud SQL with MySQL/SocketFactoryClassNotFoundException:带有 MySQL/SocketFactory 的 Google Cloud SQL
【发布时间】:2021-05-22 16:20:05
【问题描述】:

我正在尝试将我的 Java 代码连接到我在 Google Cloud SQL 中创建的数据库,但出现 ClassNotFound 和 SQLException 错误:-

java.lang.ClassNotFoundException: com.google.cloud.sql.mysql.SocketFactory
java.sql.SQLException: 找不到适合 jdbc:mysql 的驱动程序

我还在代码中得到了 NullPointerException,在下面一行的 getAllFilms() 方法中,我假设这是因为代码没有建立数据库连接:-

ResultSet rs1 = stmt.executeQuery(selectSQL);

到目前为止我做过的事情:-

  • 通过客户端连接测试了 Google Cloud SQL 数据库凭据
  • 已审核相关帖子,尤其是 [this one][1]
  • 已阅读 Google 文档
  • 将 MySQL 和 Socket Factory Connector(j8) JAR 添加到我的项目依赖项中

很遗憾,我仍然无法解决。希望有人可以提供帮助。我在下面附上了我的 Java 代码。提前谢谢...

Film oneFilm = null;
Connection googleSqlConnection = null;
Statement stmt = null;

String url = "jdbc:mysql:///<dbname>?<cloudSqlInstance>&socketFactory=com.google.cloud.sql.
mysql.SocketFactory&user=<user>&password=<pword>";

public FilmDAO() {
    }

    private void openConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Class.forName("com.google.cloud.sql.mysql.SocketFactory");
        } catch (Exception e) {
            System.out.println(e);
        }

        try {
            googleSqlConnection = DriverManager.getConnection(url);
            stmt = googleSqlConnection.createStatement();
        } catch (SQLException se) {
            System.out.println(se);
        }
    }

    private void closeConnection() {
        try {
            googleSqlConnection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

public ArrayList<Film> getAllFilms() {

        ArrayList<Film> allFilms = new ArrayList<>();

        openConnection(); 

        try {
            String selectSQL = "select * from films limit 50";
            ResultSet rs1 = stmt.executeQuery(selectSQL);
            while (rs1.next()) {
                oneFilm = getNextFilm(rs1);
                allFilms.add(oneFilm);
            }

            stmt.close();
            closeConnection();
        } catch (SQLException se) {
            System.out.println(se);
        }

        return allFilms;
    }


  [1]: https://stackoverflow.com/questions/53693679/connecting-to-google-cloud-sql-with-java

【问题讨论】:

    标签: java jakarta-ee google-cloud-sql


    【解决方案1】:

    您是否已将 Cloud SQL JDBC SocketFactory 和 mysql-connector-java 添加到您的 pom.xml 中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 2017-08-20
      相关资源
      最近更新 更多