婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql解決時區相關問題

mysql解決時區相關問題

熱門標簽:許昌外呼增值業務線路 申請400電話電話價格 宜賓全自動外呼系統廠家 咸陽防封電銷卡 新鄉智能外呼系統好處 地圖標注客戶付款 石家莊400電話辦理公司 廣東400企業電話申請流程 臨沂做地圖標注

前言:

在使用 MySQL 的過程中,你可能會遇到時區相關問題,比如說時間顯示錯誤、時區不是東八區、程序取得的時間和數據庫存儲的時間不一致等等問題。其實,這些問題都與數據庫時區設置有關,本篇文章將從數據庫參數入手,逐步介紹時區相關內容。

1.log_timestamps 參數介紹

首先說明下log_timestamps參數并不影響時區,只是設置不同會影響某些日志記錄的時間。該參數主要是控制 error log、slow log、genera log 日志文件中的顯示時間,但不會影響 general log 和 slow log 寫到表 (mysql.general_log, mysql.slow_log) 中的顯示時間。

log_timestamps 是全局參數,可動態修改,默認使用 UTC 時區,這樣會使得日志中記錄的時間比北京時間慢 8 個小時,導致查看日志不方便。可以修改為 SYSTEM 變成使用系統時區。下面簡單測試下該參數的作用及修改方法:

# 查看參數值
mysql> show global variables like 'log_timestamps';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| log_timestamps | UTC  |
+----------------+-------+
1 row in set (0.00 sec)

# 產生慢日志
mysql> select sleep(10),now();
+-----------+---------------------+
| sleep(10) | now()        |
+-----------+---------------------+
|     0 | 2020-06-24 17:12:40 |
+-----------+---------------------+
1 row in set (10.00 sec)

# 慢日志文件記錄內容 發現時間是UTC時間
# Time: 2020-06-24T09:12:50.555348Z
# User@Host: root[root] @ localhost [] Id:  10
# Query_time: 10.000354 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1
SET timestamp=1592989960;
select sleep(10),now();

# 修改參數值 再次測試
mysql> set global log_timestamps = SYSTEM;
Query OK, 0 rows affected (0.00 sec)

mysql> select sleep(10),now();
+-----------+---------------------+
| sleep(10) | now()        |
+-----------+---------------------+
|     0 | 2020-06-24 17:13:44 |
+-----------+---------------------+
1 row in set (10.00 sec)

# 慢日志文件記錄內容 時間是對的
# Time: 2020-06-24T17:13:54.514413+08:00
# User@Host: root[root] @ localhost [] Id:  10
# Query_time: 10.000214 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1
SET timestamp=1592990024;
select sleep(10),now();

2.time_zone 參數介紹

time_zone參數用來設置每個連接會話的時區,該參數分為全局和會話級別,可以動態修改。默認值為 SYSTEM,此時使用的是全局參數 system_time_zone 的值,而 system_time_zone 默認繼承自當前系統的時區,即默認情況下 MySQL 時區和系統時區相同。

時區設置主要影響時區敏感的時間值的顯示和存儲。包括一些函數(如 now()、curtime())顯示的值,以及存儲在 TIMESTAMP 類型中的值,但不影響 DATE、TIME 和 DATETIME 列中的值,因為這些數據類型在存取時未進行時區轉換,而 TIMESTAMP 類型存入數據庫的實際是 UTC 的時間,查詢顯示時會根據具體的時區來顯示不同的時間。

下面我們來測試下 time_zone 參數修改產生的影響:

# 查看linux系統時間及時區
[root@centos ~]# date
Sun Jun 28 14:29:10 CST 2020

# 查看MySQL當前時區、時間
mysql> show global variables like '%time_zone%';
+------------------+--------+
| Variable_name  | Value |
+------------------+--------+
| system_time_zone | CST  |
| time_zone    | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)

mysql> select now();
+---------------------+
| now()        |
+---------------------+
| 2020-06-28 14:31:12 |
+---------------------+
1 row in set (0.00 sec)

# 創建測試表、插入部分數據
mysql> CREATE TABLE `time_zone_test` (
  ->  `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
  ->  `dt_col` datetime DEFAULT NULL COMMENT 'datetime時間',
  ->  `ts_col` timestamp DEFAULT NULL COMMENT 'timestamp時間',
  ->  PRIMARY KEY (`id`)
  -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='time_zone測試表';
Query OK, 0 rows affected, 1 warning (0.07 sec)

mysql> insert into time_zone_test (dt_col,ts_col) values ('2020-06-01 17:30:00','2020-06-01 17:30:00'),(now(),now());
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from time_zone_test;
+----+---------------------+---------------------+
| id | dt_col       | ts_col       |
+----+---------------------+---------------------+
| 1 | 2020-06-01 17:30:00 | 2020-06-01 17:30:00 |
| 2 | 2020-06-28 14:34:55 | 2020-06-28 14:34:55 |
+----+---------------------+---------------------+

# 改為UTC時區 并重新連接 發現timestamp存儲的時間會隨時區變化
mysql> set global time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)
mysql> set time_zone='+0:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like '%time_zone%';
+------------------+--------+
| Variable_name  | Value |
+------------------+--------+
| system_time_zone | CST  |
| time_zone    | +00:00 |
+------------------+--------+
2 rows in set (0.00 sec)

mysql> select now();
+---------------------+
| now()        |
+---------------------+
| 2020-06-28 06:36:16 |
+---------------------+
1 row in set (0.00 sec)

mysql> select * from time_zone_test;
+----+---------------------+---------------------+
| id | dt_col       | ts_col       |
+----+---------------------+---------------------+
| 1 | 2020-06-01 17:30:00 | 2020-06-01 09:30:00 |
| 2 | 2020-06-28 14:34:55 | 2020-06-28 06:34:55 |
+----+---------------------+---------------------+
2 rows in set (0.00 sec)

# 改回東八時區,恢復正常
mysql> set global time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)

mysql> set time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like '%time_zone%';
+------------------+--------+
| Variable_name  | Value |
+------------------+--------+
| system_time_zone | CST  |
| time_zone    | +08:00 |
+------------------+--------+
2 rows in set (0.00 sec)

mysql> select now();
+---------------------+
| now()        |
+---------------------+
| 2020-06-28 14:39:14 |
+---------------------+
1 row in set (0.00 sec)

mysql> select * from time_zone_test;
+----+---------------------+---------------------+
| id | dt_col       | ts_col       |
+----+---------------------+---------------------+
| 1 | 2020-06-01 17:30:00 | 2020-06-01 17:30:00 |
| 2 | 2020-06-28 14:34:55 | 2020-06-28 14:34:55 |
+----+---------------------+---------------------+
2 rows in set (0.00 sec)

如果需要永久生效,還需寫入配置文件中。例如將時區改為東八區,則需要在配置文件[mysqld]部分增加一行:default_time_zone = '+8:00'。

3.時區常見問題及如何避免

時區設置不妥可能會產生各種問題,下面我們列舉下幾個常見的問題及解決方法:

3.1 MySQL 內部時間不是北京時間

遇到這類問題,首先檢查下系統時間及時區是否正確,然后看下 MySQL 的 time_zone,建議將 time_zone 改為'+8:00'。

3.2 Java 程序存取的時間與數據庫中的時間相差 8 小時

出現此問題的原因大概率是程序時區與數據庫時區不一致導致的。我們可以檢查下兩邊的時區,如果想統一采用北京時間,則可以在 jdbc 連接串中增加 serverTimezone=Asia/Shanghai,并且 MySQL 方面也可以將 time_zone 改為'+8:00'。

3.3 程序時間與數據庫時間相差 13 小時或 14 小時

如果說相差 8 小時不夠讓人驚訝,那相差 13 小時可能會讓很多人摸不著頭腦。出現這個問題的原因是 JDBC 與 MySQL 對 “CST” 時區協商不一致。因為 CST 時區是一個很混亂的時區,有四種含義:

  • 美國中部時間 Central Standard Time (USA) UTC-05:00 或 UTC-06:00
  • 澳大利亞中部時間 Central Standard Time (Australia) UTC+09:30
  • 中國標準時 China Standard Time UTC+08:00
  • 古巴標準時 Cuba Standard Time UTC-04:00

MySQL 中,如果 time_zone 為默認的 SYSTEM 值,則時區會繼承為系統時區 CST,MySQL 內部將其認為是 UTC+08:00。而 jdbc 會將 CST 認為是美國中部時間,這就導致會相差 13 小時,如果處在冬令時還會相差 14 個小時。

解決此問題的方法也很簡單,我們可以明確指定 MySQL 數據庫的時區,不使用引發誤解的 CST,可以將 time_zone 改為'+8:00',同時 jdbc 連接串中也可以增加 serverTimezone=Asia/Shanghai。

3.4 如何避免出現時區問題

如何避免上述時區問題,可能你心里也有了些方法,簡要總結幾點如下:

  1. 首先保證系統時區準確。
  2. jdbc 連接串中指定時區,并與數據庫時區一致。
  3. time_zone 參數建議設置為'+8:00',不使用容易誤解的 CST。
  4. 各環境數據庫實例時區參數保持相同。

可能有的同學說了,我們數據庫中 time_zone 參數選擇的是默認的 SYSTEM 值,也沒有發生程序時間和數據庫時間不一致的問題。此時是否需要將 time_zone 改為'+8:00'?在這種情況下還是建議將 time_zone 改為'+8:00',特別是經常查詢 TIMESTAMP 字段,因為當 time_zone=system 的時候,查詢 timestamp 字段會調用系統的時區做時區轉換,有全局鎖__libc_lock_lock 的保護,可能導致線程并發環境下系統性能受限。而改為'+8:00'則不會觸發系統時區轉換,使用 MySQL 自身轉換,大大提高了性能。

總結:

讀完本篇文章,你是否對數據庫時區有了更深刻的認識呢。希望這篇文章對你有所幫助,特別是想了解 MySQL 時區相關內容時,可以拿來多讀讀。如果你遇到過其他時區相關問題,歡迎留言討論。

以上就是mysql解決時區相關問題的詳細內容,更多關于mysql時區相關問題的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 關于Java中的mysql時區問題詳解
  • MySQL查看和修改時區的方法
  • MySQL修改時區的方法小結
  • 詳解MySQL查詢時區分字符串中字母大小寫的方法
  • mysql時區問題
  • 解決MySQL8.0時區的問題步驟

標簽:臺灣 鎮江 阜新 合肥 日照 貴州 鷹潭 北京

巨人網絡通訊聲明:本文標題《mysql解決時區相關問題》,本文關鍵詞  mysql,解決,時區,相關,問題,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql解決時區相關問題》相關的同類信息!
  • 本頁收集關于mysql解決時區相關問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    美女一区二区久久| 精油按摩中文字幕久久| 99国产精品视频免费观看| 亚洲国产精品激情在线观看| 国产91在线|亚洲| 中文字幕一区二区三区在线播放| 99免费精品视频| 一区二区三区在线播放| 7777精品久久久大香线蕉| 日日夜夜免费精品| 91丨国产丨九色丨pron| 日韩欧美亚洲另类制服综合在线| 久久国产乱子精品免费女| 国产亚洲欧美色| 色老头久久综合| 蜜臀av在线播放一区二区三区| 久久亚洲一级片| 婷婷成人综合网| 久久女同性恋中文字幕| 一本色道综合亚洲| 另类的小说在线视频另类成人小视频在线 | 东方欧美亚洲色图在线| 亚洲欧美成人一区二区三区| 欧美日韩一区不卡| 国产一区久久久| 一区二区三区国产豹纹内裤在线| 日韩一级高清毛片| 91婷婷韩国欧美一区二区| 国产精品视频线看| 欧美人体做爰大胆视频| 婷婷亚洲久悠悠色悠在线播放 | 久久一区二区三区国产精品| 亚洲一区在线观看网站| 欧美mv日韩mv国产网站| 麻豆91在线看| 欧美大片日本大片免费观看| 免费观看91视频大全| 欧美一区二区三区四区久久| 天天影视网天天综合色在线播放| 久久无码av三级| 成人午夜免费视频| 奇米一区二区三区av| 亚洲欧美日韩精品久久久久| 91丨九色丨蝌蚪丨老版| 国产一区二区三区免费播放| 亚洲国产一区二区三区青草影视| 国产亚洲欧美中文| 成人综合婷婷国产精品久久免费| 日日夜夜精品视频天天综合网| 91精品在线观看入口| 波多野结衣一区二区三区 | 国产一区二区三区四区在线观看| 亚洲国产成人porn| 亚洲色大成网站www久久九九| 久久亚洲精品国产精品紫薇 | 久久精品一区二区三区四区| 91精品国产色综合久久| 91麻豆免费观看| 成人午夜av电影| 久久精品人人做| 亚洲激情自拍视频| 久久毛片高清国产| 亚洲国产精品一区二区尤物区| 久久日韩粉嫩一区二区三区| 欧美一级一区二区| 欧美熟乱第一页| 色综合天天综合狠狠| 国产99精品国产| 一区二区三区中文字幕| 91.xcao| 欧美在线影院一区二区| 五月激情综合色| 日韩一级视频免费观看在线| 欧美日韩视频在线观看一区二区三区| 久久精品国产99国产| 婷婷久久综合九色综合绿巨人| 日韩欧美的一区二区| 欧美一区二区三区视频免费播放| 91精品91久久久中77777| 青青草原综合久久大伊人精品| 亚洲午夜精品一区二区三区他趣| 一区二区三区在线视频免费观看| 国产精品第五页| 欧美三级欧美一级| 欧美综合久久久| 日韩av一区二区三区| 国产女同性恋一区二区| 国产日韩亚洲欧美综合| 欧美精品 国产精品| 成人短视频下载| 日韩精品免费视频人成| 婷婷中文字幕一区三区| 日本欧美韩国一区三区| 国产精品久久久久婷婷二区次| 国产女主播视频一区二区| 欧美日韩国产高清一区二区| 韩国成人精品a∨在线观看| 国产揄拍国内精品对白| 一区二区三区四区中文字幕| 天堂一区二区在线| 精品写真视频在线观看| 亚洲丶国产丶欧美一区二区三区| 国产精品剧情在线亚洲| 亚洲免费毛片网站| 欧美bbbbb| 视频一区二区国产| 亚洲男人的天堂在线观看| 国产日韩精品久久久| 欧美本精品男人aⅴ天堂| 国产欧美日韩另类视频免费观看| 欧美亚洲一区二区在线观看| 日韩精品在线一区二区| 欧美日韩国产精品自在自线| 久久久国产精品麻豆| 亚洲欧洲制服丝袜| 麻豆视频一区二区| 美洲天堂一区二卡三卡四卡视频| 亚洲免费资源在线播放| 奇米色一区二区三区四区| 亚洲制服欧美中文字幕中文字幕| 麻豆高清免费国产一区| 欧美aⅴ一区二区三区视频| 国产一区二区三区在线观看免费| 色综合天天综合网天天狠天天| 成人av网站在线观看免费| 欧美精品少妇一区二区三区| 在线观看日韩国产| 精品国产髙清在线看国产毛片 | 欧美色综合网站| 欧美精品一区二区三区视频| 欧美一级一级性生活免费录像| 在线播放/欧美激情| 中文一区二区在线观看| 美国十次了思思久久精品导航| 亚洲国产精品一区二区久久恐怖片 | 亚洲第一精品在线| 成人视屏免费看| 日韩视频免费直播| 日韩午夜三级在线| 精品国产污网站| 国产午夜精品一区二区| 免费观看在线色综合| 一本一道波多野结衣一区二区| 91视频一区二区三区| av在线播放不卡| 国产欧美1区2区3区| 久久亚洲一区二区三区明星换脸| 国产综合久久久久久久久久久久| 日韩av电影免费观看高清完整版| 日韩av一二三| 欧美性受xxxx黑人xyx性爽| 久久伊人蜜桃av一区二区| 免费看日韩精品| 国产成人啪免费观看软件| 精品理论电影在线观看 | 亚洲成av人片一区二区| 色香蕉成人二区免费| 国产精品久久久一本精品 | 一本一道波多野结衣一区二区| 国产精品狼人久久影院观看方式| 国产寡妇亲子伦一区二区| 91丝袜美腿高跟国产极品老师 | 91性感美女视频| 欧美绝品在线观看成人午夜影视| 高清不卡一区二区在线| 欧美一区二区在线看| 中文字幕乱码日本亚洲一区二区| 久久成人18免费观看| 99麻豆久久久国产精品免费| 9191成人精品久久| 日本中文字幕一区| 日韩午夜激情视频| 国产一区二区91| 在线91免费看| 亚洲视频香蕉人妖| 在线观看91视频| 国产亚洲欧美一区在线观看| 成人小视频免费在线观看| 日韩一卡二卡三卡国产欧美| 综合欧美亚洲日本| 狠狠色丁香婷综合久久| 精品视频色一区| 日本美女一区二区三区| 亚洲精品一线二线三线无人区| 一级女性全黄久久生活片免费| 韩国av一区二区三区四区| 精品福利一二区| 美女高潮久久久| 国产亚洲短视频| 91蝌蚪国产九色| 午夜精品久久久久影视| 精品国产一区二区精华| 成人动漫一区二区| 2022国产精品视频| 91在线免费视频观看| 偷拍与自拍一区| 国产精品色眯眯| 国产精品一卡二| 欧美成人一级视频| 老司机免费视频一区二区|