MySQL time_zone

使用的是 MySQL 5.7

在使用 SSM 框架時,連接數據庫出現錯誤

The server time zone value ‘xxxxx’(這裏亂碼了) 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

按照 MySQL 文檔中描述,服務器默認使用操作系統的時區,這裏出現亂碼可能因爲我的系統是使用 GBK 編碼的原因,然後 MySQL 無法正確識別。不管如何,明確指定時區總是好的。
我需要配置 server 或 JDBC 驅動的 tome zone。

1. server

先查看下 server 的 time zone

這裏寫圖片描述

設置 time_zone 的幾種方式

  • 使用命令

mysql> SET GLOBAL time_zone = timezone;

或者

mysql> SET time_zone = timezone;

區別是前者是全局設置,針對所有連接,後者只針對當前設置的客戶端。
命令行的設置當 MySQL 服務重啓的時候就會失效。

或者在啓動服務器時增加選項 --default-time-zone=timezone

  • 使用配置文件

需要重啓服務器都能使用設置好的 time zone,則可以在配置文件中,my.ini 或 my.cnf 中的 [mysqld] 部分增加 default-time-zone='timezone'

關於 time zone 的格式

  • 'SYSTEM' 表示 server 的 time zone 跟隨系統
  • 使用 UTC 偏移量,如 '+10:00''-6:00'
  • 使用時區名,如 'Europe/Helsinki', 'US/Eastern', 'MET' 等,注意只有在 MySQL 中有時區信息表並且有相應信息數據的時候才能使用時區名

參考官方文檔

2. JDBC driver

在 url 中增加 serverTimezone 屬性,如

jdbc:mysql://localhost:3306/demo?serverTimezone=Hongkong

發佈了50 篇原創文章 · 獲贊 26 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章