我正在尝试使用以下代码将我的Java Maven项目(在Jetty服务器上运行)连接到Google Cloud MySQL数据库:
private static final String CREDENTIALS_STRING = "jdbc::mysql://google/weatherplanning?cloudSqlInstance=csci310-project-2:us-central1:myinstance&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false&user=xxxx&password=xxxx";
try {
System.out.println("Connecting to database...");
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection(CREDENTIALS_STRING);
} catch (SQLException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我在pom.xml中都包含了这两个依赖项:
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>mysql-socket-factory-connector-j-8</artifactId>
<version>1.0.15</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
我要
java.sql.SQLException:找不到适合jdbc :: mysql:// google ...的驱动程序
而且我不知道该怎么办。我认为依赖项应该可以将JDBC驱动程序添加到我的类路径中。
这是正确的依赖性吗?我不使用gcp,但是当我对MySQL GCP mvn存储库使用Google mvn依赖时,会得到
<!-- https://mvnrepository.com/artifact/com.google.cloud.sql/mysql-socket-factory -->
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>mysql-socket-factory</artifactId>
<version>1.0.15</version>
</dependency>
也许您可以尝试使用这种依赖性而不是您的j-8
一个
您的问题似乎在JDBC URL中有错字。您的网址应以jdbc:mysql
开头,而不是jdbc::mysql
。
另外,you should always use a connection pool(如Hikari)。连接池具有许多优点,包括更好的错误处理,指数退避和减少的延迟。
您可以在context of a web application in this sample中查看与Cloud SQL JDBC套接字工厂一起使用的Hikari。 Full instructions for deploying it are in the sample's README。