Estoy intentando conectar mi proyecto Java Maven (que se ejecuta en un servidor de embarcadero) a una base de datos de Google Cloud MySQL con el siguiente código:
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();
}
He incluido estas dos dependencias en mi 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>
Me estoy poniendo
java.sql.SQLException: No se encontró controlador adecuado para JDBC :: mysql: // google ...
y yo no sé qué hacer. Asumo que las dependencias deben manejar agregar el controlador JDBC para mi ruta de clase.
Sus miradas problema como usted tiene un error tipográfico en su URL de JDBC. Su URL debe comenzar con jdbc:mysql
en lugar de jdbc::mysql
.
Además, siempre se debe utilizar un pool de conexiones (como Hikari ). Las agrupaciones de conexiones tienen muchos beneficios, incluyendo un mejor manejo de errores, retroceso exponencial, y la latencia reducida.
Puede ver Hikari está utilizando con la fábrica de sockets nube SQL JDBC en el contexto de una aplicación web en esta muestra . Las instrucciones completas para su despliegue están en README de la muestra .