欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql now()函數(shù)調(diào)用系統(tǒng)時間不對的解決方法

 更新時間:2023年05月24日 11:25:17   作者:五角大寨  
mysql的now()函數(shù)與實際時間不符,本文就詳細的介紹一下mysql now()函數(shù)調(diào)用系統(tǒng)時間不對的解決方法,非常具有實用價值,需要的朋友可以參考下

今天在MySQL的Now函數(shù)上踩了兩個坑,花了不少時間。

向數(shù)據(jù)庫寫記錄最好用不用客戶端時間

第一個坑是客戶端、服務器的系統(tǒng)時間不一致。

在執(zhí)行依賴時間的SQL查詢的時候,使用了客戶端本地的時間格式,客戶端程序返回當前時間是:‘7/18/2022 10:02:43’,然而MYSQL就不能正確識別了,也沒有報錯,導致這個這個錯誤隱藏了很久才被發(fā)現(xiàn)。

實際上,如果給出的時間格式是這樣:‘2022/7/18 10:02:43’,就會返回預期的結(jié)果。猜想這次運行客戶端程序的服務器雖然也是中文版,但是內(nèi)核應該是英文版的,因此系統(tǒng)默認的時間格式和我們常見的不同,于是MySQL把它認作是。。。(一個古怪的時間去了)

解決辦法

盡可能不使用客戶端的時間,不準確還有時區(qū)問題,用MySQL服務器端時間Now()來進行查詢和保存記錄。

MySQL服務器時區(qū)不等于東八區(qū)的問題

這次遇到的MySQL的版本默認的時區(qū)是UTC,也就是標準時間。如果數(shù)據(jù)記錄的時間是北京時間,也就是東八區(qū)的時間,那么MySQL的Now函數(shù)返回的時間和數(shù)據(jù)記錄的時間相差了八個小時。

查詢MySQL時區(qū):

mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | SYSTEM |
+------------------+--------+

設(shè)置MySQL時間為北京時間

mysql> set global time_zone = '+8:00';
Query OK, 0 rows affected
mysql> set time_zone = '+8:00';
Query OK, 0 rows affected
mysql> flush privileges;?
Query OK, 0 rows affected

再查詢下MySQL時區(qū),驗證下Now返回了北京時間

mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | +08:00 |
+------------------+--------+
mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2022-07-19 18:57:35 |
+---------------------+
1 row in set

MySQL時區(qū)的設(shè)置和Docker有關(guān)

這里說下花了我大量時間的坑,也就是這個服務器的MySQL是通過Docker安裝的,我就懶得去修改MySQL的配置文件了,而配置文件里沒有配置默認時區(qū)。

理論上,MySQL就會應用本地服務器的時區(qū),而本地服務器的時區(qū)已經(jīng)設(shè)置成東八區(qū)了,在系統(tǒng)控制臺我能看到返回的當前時間是北京時間了。

問題就在于上面這個“理論”不靠譜,不是的,MySQL依然是返回UTC時間。

我記憶的這個“理論”應該是有問題的,但沒有搞清楚具體問題是什么,懷疑是和Dockers有關(guān),如果是直接安裝的MySQL在不配置默認時區(qū)時似乎沒有遇到這個問題。

解決辦法:

結(jié)論是不管如何,還是手動在設(shè)置下系統(tǒng)的時區(qū)吧!或者在寫MySQL的配置文件時,增加如下一個配置,然后才能使用Now()函數(shù)。

修改my.cnf文件,加入如下1行:

default-time-zone='+08:00' # 數(shù)據(jù)表默認時區(qū)

如果是中途 修改,需要重啟Docker,不能偷懶。

到此這篇關(guān)于MySQL now函數(shù)使用的坑的文章就介紹到這了,更多相關(guān)MySQL now內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • msyql show命令匯總

    msyql show命令匯總

    本篇文章是對msyql中的show命令進行了匯總,需要的朋友參考下
    2013-06-06
  • Mysql中 unique列插入重復值該怎么解決呢

    Mysql中 unique列插入重復值該怎么解決呢

    本文給大家介紹mysql中unique列插入重復值的解決方案,主要基于mysql平臺,通過這些,可以做到一些新的功能和應用。特此把本文本文分享給廣大開發(fā)人員
    2015-11-11
  • MySQL窗口函數(shù)OVER使用示例詳細講解

    MySQL窗口函數(shù)OVER使用示例詳細講解

    這篇文章主要介紹了MySQL窗口函數(shù)OVER()用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 在MySQL中如何存取List<String>數(shù)據(jù)

    在MySQL中如何存取List<String>數(shù)據(jù)

    這篇文章主要介紹了在MySQL中如何存取List<String>數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • mysql 5.7.18 綠色版下載安裝教程

    mysql 5.7.18 綠色版下載安裝教程

    這篇文章主要為大家詳細介紹了mysql 5.7.18 綠色版下載安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Linux系統(tǒng)每日定時備份mysql數(shù)據(jù)的方法步驟

    Linux系統(tǒng)每日定時備份mysql數(shù)據(jù)的方法步驟

    這篇文章主要介紹了Linux系統(tǒng)每日定時備份mysql數(shù)據(jù)的方法步驟,包括創(chuàng)建文件夾、編寫腳本、設(shè)置定時任務和測試腳本,詳細步驟涵蓋從文件夾創(chuàng)建到腳本執(zhí)行的全過程,幫助用戶實現(xiàn)數(shù)據(jù)庫的自動備份,需要的朋友可以參考下
    2024-11-11
  • MySql中使用INSERT INTO語句更新多條數(shù)據(jù)的例子

    MySql中使用INSERT INTO語句更新多條數(shù)據(jù)的例子

    這篇文章主要介紹了MySql中使用INSERT INTO語句更新多條數(shù)據(jù)的例子,MySQL的特有語法,需要的朋友可以參考下
    2014-06-06
  • 深入理解mysql事務與存儲引擎

    深入理解mysql事務與存儲引擎

    本文主要介紹了mysql事務與存儲引擎,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • linux下mysql 5.7.16 免安裝版本圖文教程

    linux下mysql 5.7.16 免安裝版本圖文教程

    這篇文章主要為大家詳細介紹了linux下mysql 5.7.16 免安裝版本圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • mysql設(shè)置指定ip遠程訪問連接實例

    mysql設(shè)置指定ip遠程訪問連接實例

    這篇文章主要介紹了mysql設(shè)置指定ip遠程訪問連接的方法,分別實例講述了從任意主機和指定ip訪問遠程MySQL數(shù)據(jù)庫的方法,代碼簡單功能實用,需要的朋友可以參考下
    2014-10-10

最新評論