>  기사  >  데이터 베이스  >  mysql에서 URL 시간대 트랩을 피하는 방법에 대한 자세한 설명

mysql에서 URL 시간대 트랩을 피하는 방법에 대한 자세한 설명

小云云
小云云원래의
2017-12-22 13:38:131589검색

최근에는 mysql 6.0.x 이상의 jar를 사용하는 경우 코드 URL의 링크에 serverTimezone을 지정해야 합니다. 예외가 발생합니다. 이 질문은 mysql의 url 시간대에 관한 것입니다. 이 트랩에 주의하지 않으면 이 기사에서 주로 mysql의 url 시간대 트랩을 피하는 방법을 공유합니다.

1. ServerTimezone이 지정되지 않았습니다.

xml

<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy"/>

에서 url

Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

을 구성할 때 예외가 발생합니다. 시간대 지원을 사용하려면 serverTimezone 구성 속성을 통해 서버 또는 JDBC 드라이버를 구성해야 합니다. 더 자세한 시간대 값을 사용해야 합니다.

2. 온라인 솔루션

url?serverTimezone=utc

<property name="url" value="jdbc:mysql://localhost:3306/springdatastudy?serverTimezone=UTC"/>

2.1. 발생된 문제

위의 타임존 프로그램이 잘못되지는 않았지만, 자바 코드를 사용하여 삽입하게 되었습니다. 데이터베이스 시간에 문제가 발생했습니다.

예를 들어 Java 코드에 삽입된 시간은 2017-08-21 17:29:56

그러나 데이터베이스에 표시되는 시간은 2017-08-21 09:29:56

3입니다. . 근본 원인

은 시간대 설정 문제 때문입니다.

UTC는 세계 표준시를 의미하지만, 우리가 사용하는 시간은 UTC보다 8시간 빠른 베이징 시간대, 즉 동8구입니다.

UTC + (+0800) = 현지(베이징) 시간

4. 해결 방법

URL의 시간대는 중국 표준시를 사용합니다. 또한 serverTimezone=Asia/Shanghai

4.1 Java 코드를 사용하여 현지 시간대 ID를 가져옵니다

Calendar cal = Calendar.getInstance();
TimeZone timeZone = cal.getTimeZone();
System.out.println(timeZone.getID());
System.out.println(timeZone.getDisplayName());
Asia/Shanghai
中国标准时间

관련 권장 사항:

MySQL의 또는 문 사용 예

MySQL의 인덱스 및 트리거에 대한 자세한 설명

MySQL의 날짜 함수 요약

위 내용은 mysql에서 URL 시간대 트랩을 피하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.