Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Erro de The server time zone value 'Hora oficial do Brasil'

Estou fazendo um codigo pro projeto da faculdade, quando conecto no banco de dados ele da esse erro. Segue o codigo

package ControleDeGastos;

/**
 *
 * @author GUSTAVO
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

class Usuario {
    private String email;
    private String senha;
    private Map<String, Double> gastos;

    public Usuario(String email, String senha) {
        this.email = email;
        this.senha = senha;
        this.gastos = new HashMap<>();
    }

    public String getEmail() {
        return email;
    }

    public String getSenha() {
        return senha;
    }

    public Map<String, Double> getGastos() {
        return gastos;
    }
}

public class ControleDeGastos {
    private static Map<String, Usuario> usuarios = new HashMap<>();
    private static Usuario usuarioLogado;
    private static Scanner scanner = new Scanner(System.in);
    private static Connection connection;

    public static void main(String[] args) {
        conectarBancoDeDados();

        boolean sair = false;

        while (!sair) {
            System.out.println("=== CONTROLE DE GASTOS ===");
            System.out.println("1. Cadastrar usuario");
            System.out.println("2. Fazer login");
            System.out.println("0. Sair");
            System.out.print("Escolha uma opcao: ");

            int opcao = scanner.nextInt();
            scanner.nextLine(); // Limpar o buffer do teclado

            switch (opcao) {
                case 1:
                    cadastrarUsuario();
                    break;
                case 2:
                    fazerLogin();
                    break;
                case 0:
                    sair = true;
                    break;
                default:
                    System.out.println("Opção inválida.");
                    break;
            }

            System.out.println();
        }

        desconectarBancoDeDados();
    }

    private static void conectarBancoDeDados() {
        String url = "jdbc:mysql://localhost:3306/A3_A3";
        String user = "root";
        String password = "guGU12345@";

        try {
            connection = DriverManager.getConnection(url, user, password);
            System.out.println("Conexão com o banco de dados estabelecida.");
        } catch (SQLException e) {
            System.out.println("Erro ao conectar ao banco de dados: " + e.getMessage());
        }
    }

    private static void desconectarBancoDeDados() {
        try {
            if (connection != null && !connection.isClosed()) {
                connection.close();
                System.out.println("Conexão com o banco de dados encerrada.");
            }
        } catch (SQLException e) {
            System.out.println("Erro ao encerrar a conexão com o banco de dados: " + e.getMessage());
        }
1 resposta
solução!

Oi!

Esse erro ocorre quando o driver JDBC do MySQL não consegue determinar automaticamente o fuso horário do servidor. Para corrigir esse problema, você pode definir explicitamente o fuso horário na URL de conexão com o MySQL.

Aqui está um exemplo de como fazer isso:

String url = "jdbc:mysql://localhost:3306/A3_A3?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";

Neste exemplo, a parte importante é serverTimezone=UTC, que define o fuso horário como UTC (Tempo Universal Coordenado). No entanto, se você precisar usar o fuso horário "Hora oficial do Brasil", você pode ajustar o valor para America/Sao_Paulo ou Brazil/East, dependendo da versão do driver JDBC do MySQL que você está usando.

Ao definir explicitamente o fuso horário na URL de conexão, você deve evitar o erro relacionado ao fuso horário ao conectar-se ao MySQL usando o Java.