Mysql сохраняет дату на 1 день раньше даты, предоставленной из входных данных из Java-приложения - PullRequest
0 голосов
/ 24 сентября 2018

Я использую следующие спецификации в моем текущем проекте (производство)

  1. ОС: CentOS 7
  2. База данных: MySql
  3. Java 8
  4. Hibernate
  5. tomcat server 8

База данных находится на отдельном сервере, чем сервер приложений, но обе находятся в одной локальной сети.

Тип данных в таблице mysql: date для сохранения только даты и datetime для сохранения даты вместе со временем.

Проблема в том, что mysql сохраняется каждую дату на 1 день раньше указанной датыиз приложения.До сих пор я пробовал следующее, но все еще не повезло:

  1. Я установил часовой пояс для приложения и сервера базы данных как Азия / Дакка и проверил это в своем java-приложении.
  2. Я также установил часовой пояс в файле сервера tomcat (setenv.sh).
  3. Я также проверил сгенерированный sql из спящего режима TRACE в файле свойств log4j, где дата также совпадает с датой ввода.

Чего мне не хватает?Кто-нибудь может подсказать?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Может быть, вы можете попробовать изменить serverTimezone:

serverTimezone=GMT%2B8
0 голосов
/ 24 сентября 2018

Спасибо всем за то, что поделились своим опытом в этой проблеме.

Наконец-то я решил эту проблему, изменив атрибут serverTimezone строки подключения mysql в dispatcher-servlet моего веб-приложения java.

<property name="url" value="jdbc:mysql://x.x.x..x:3306/dbname?characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=Asia/Dhaka" /> 
...