최근에는 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에서 URL 시간대 트랩을 피하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!