Solucionado (ver solução)
Solucionado
(ver solução)
16
respostas

Erro ao conectar ao MySql

Olá, estou tetando conectar ao mysql, mas sem sucesso algum

Crei um úsurario lá conforme as informações do professor ( username=root e userpassword=root ), mas quando tento rodar o código aparece essa informação aqui seguinte de um monte linhas.

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

Vi que algumas pessoas já tiveram esse erro e foram informadas sobre a falta de um Mysql connector, mas não encontro em qual curso é ensinado sobre isso. Alguém sabe que curso é esse que ensinaram sobre essa ferramenta ( Mysql Connector ), ou tem uma forma de resolver isso sem precisar dessa ferramenta?

16 respostas

Oi Guilherme!

Verifica se o seu MySQL está funcionando corretamente. Tenta fazer login e acessar o MySQL, por fora da aplicação, pois esse erro geralmente ocorre quando o banco de dados está fora do ar ou os dados de conexão passados na aplicação estão incorretos.

Oi, Rodrigo

Ele está funcionando normalmente aqui, eu normalmente uso a autenticação do Windows e também uso o " nomeDoComputador/SQLEXPRESS" no nome do servidor para poder entrar nele usando o Microsoft SQL Server Studio 17, talvez seja esse o motivo?

Vamos fazer um teste então. Crie essa classe no seu projeto, em qualquer pacote, execute e veja no console se acontece alguma exception:

import java.sql.Connection;
import java.sql.DriverManager;

public class TestaConexao {

    public static void main(String[] args) {
        try {
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost/vollmed_api", "root", "root");
            System.out.println("conectado com sucesso!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Olá, Rodrigo

Rodei o código e deu esse erro aqui:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/vollmed_api
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:708)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230)
    at TestaConexao.main(TestaConexao.java:8)

Blz. Agora posta aqui o seu pom.xml. Parece que está faltando a dependência do MySQL.

Aqui está ele completo:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>med.voll</groupId>
    <artifactId>api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>api</name>
    <description>API para a Aplicacao do Med.Voll</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-mysql</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Ta certinho. Confere na aba do Maven se apareceu todas as dependências:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A única diferença que eu vi foram as versões, alguns que tem um -MS do lado no seu e o JavaUnit que apareceu de repente. Sabe dizer o que tá acontecendo?

Lista de dependencias do projeto

Pois é, do lado do "código" está tudo certinho, então acredito que seja em relação ao seu MySQL mesmo, que deve estar configurado de uma forma que a aplicação não consegue se conectar.

Que bizarro, será que tem problema em continuar o curso mesmo com esses problemas? Queria ver como funciona as outras coisas

solução!

Sem o banco de dados não vai conseguir continuar. O que pode fazer é alterar para o H2, removendo a dependência do MySQL do pom.xml(e também a do flyway-mysql) e adicionando a dependência do H2:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

E alterando as propriedades no application.properties:

spring.datasource.url=jdbc:h2:mem:vollmed_api
spring.datasource.username=sa
spring.datasource.password=

E o h2 fará o que? Ele vai conseguir fazer todas as coisas que iriam ser feitas com o Mysql?

Ele é um banco de dados em memoria. Não precisa instalar nada no computador e substitui o MySQL

Certo, muito obrigado pelo sua ajuda!

Rodrigo e Guilherme consegui resolver o problema. No application properties coloque a propriedade dessa forma spring.datasource.url=jdbc:mysql://localhost:13306/alura?useSSL=false&serverTimezone=UTC Aqui resolveu :D

Estava sofrendo do mesmo problema, porém resolvi especificando a porta junto ao localhost.

Código original

spring.datasource.url=jdbc:mysql://localhost:/vollmed_api

Ao executar pegava o mesmo problema, resolvi informando a porta manualmente, ficou assim:

spring.datasource.url=jdbc:mysql://localhost:8081/vollmed_api

Depois desse ajuste, passou a conectar normalmente.

NOTA Na hora de instalar o MySQL, eu mudei a porta padrão, por isso usei porta 8081

Espero ajudar!