2
respostas

[Bug] Problema no TimeZone Spring boot ao salvar no MySQL 8

Boa noite!

Já testei em diferentes versões do Spring 3+ com MySQL8.0. O bug é que o horário(OffSetDateTime) retornado na API não é o mesmo salvo no banco de dados. Inicialmente eu achei que era algum problema com o timezone do mysql, mas desconfio que seja algo relacionado a desserialização feita pelo spring/jackson/jpa no momento de salvar.

No projeto do curso eu usei os tipos LocalDateTime e OffSetDateTIme, mas mesmo assim o registro é salvo com 3 horas a mais no banco de dados.

Já tentei settar tudo com "America/Sao_Paulo". e mesmo assim não adianta.

Ex: esse horário : "2024-12-10T16:20:03.923638081-03:00" --- Spring 2024-12-10 19:20:04 -- MySQL

Poderiam me ajudar?

Spring version: 3.3.6 MySql 8.0

2 respostas

Olá Ricardo, boa noite!

Entendo a frustração com essa questão de timezone, pois pode ser realmente confuso. Vamos tentar resolver isso juntos!

O problema que você está enfrentando é comum quando há uma discrepância entre o timezone configurado na sua aplicação e no banco de dados. Aqui estão algumas sugestões que podem ajudar a resolver o problema:

  1. Configuração do TimeZone no MySQL: Certifique-se de que o timezone do MySQL está configurado corretamente. Você pode verificar o timezone atual do MySQL executando o seguinte comando no seu banco de dados:

    SELECT @@global.time_zone, @@session.time_zone;
    

    Para definir o timezone, você pode usar:

    SET GLOBAL time_zone = 'America/Sao_Paulo';
    
  2. Configuração do TimeZone na aplicação Spring Boot: No seu arquivo application.properties ou application.yml, adicione a seguinte configuração para garantir que o timezone da conexão com o banco de dados esteja correto:

    spring.datasource.url=jdbc:mysql://localhost:3306/seu_banco_de_dados?serverTimezone=America/Sao_Paulo
    

Espero que uma dessas sugestões ajude a resolver o problema. Às vezes, pode ser necessário ajustar mais de uma configuração para que tudo funcione em harmonia.

Espero ter ajudado e bons estudos!

Boa tarde, Rodrigo!

Obrigado pelas alternativas...

EU testei todas elas e mesmo assim a diferença de 3 horas persiste no banco de dados.

Segue meu github com o projeto: https://github.com/ricardoguntzell/clinica-medica