#mysql #spring-boot #hibernate #spring-data-jpa
#mysql #spring-boot #спящий режим #spring-data-jpa
Вопрос:
Технологический стек — Spring Boot 2.2.5.RELEASE, JPA с гибернацией, Java 8, MySQL 5.7.31. Существуют поля базы данных, содержащие временную метку, например 2020-11-26 14:00, поэтому без часового пояса.
Запуск приложения Spring Boot и базы данных MySQL в Windows (без участия docker), проблем нет.
Однако временная метка (после чтения из базы данных) имеет неправильное значение (2020-11-26 13:00), когда приложение Spring Boot запускается на macOS (directy) и база данных MySQL внутри контейнера docker (я использую этот: https://hub.docker.com/_/mysql -> 5.7.31). Я мог бы решить эту проблему, установив часовой пояс в application.properties:
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/<mydb>?serverTimezone=Europe/Berlinamp;sessionVariables=sql_mode='...
Я также запускаю приложение в конвейере (gitlab.com ) как с загрузкой Spring, так и с базой данных MySQL в контейнере docker. Чтобы быть более конкретным, они выполняются в отдельных контейнерах. Теперь проблема с неправильной временной меткой возникает снова. Часовой пояс, установленный через spring.datasource.url, похоже, не имеет никакого эффекта.
Ответ №1:
Часовой пояс контейнера docker был установлен неправильно.
variables:
TZ: "Europe/Berlin"
in .gitlab-ci.yml делает свое дело.