1。在mysql的命令模式下使用
創(chuàng)新互聯(lián)是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁(yè)美工、網(wǎng)站程序員、網(wǎng)頁(yè)設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營(yíng)銷人員及形象策劃。承接:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫(kù)開發(fā),以高性價(jià)比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺(tái)等全方位的服務(wù)。
mysql
select
CURTIME();
或
mysql
select
now();
看當(dāng)前時(shí)間是否正確,可以看到mysql當(dāng)前使用的是那一個(gè)時(shí)區(qū)的時(shí)間。
2。在mysql命令行中更改時(shí)區(qū)
mysql
SET
time_zone
=
'+8:00';
#
此為北京時(shí),我們所在東8區(qū)
mysql
flush
privileges;
#
立即生效
此時(shí)mysql時(shí)區(qū)已更改正確,與系統(tǒng)時(shí)區(qū)都使用為
Shanghai時(shí)間了。
####
這種方法好像只能在終端上使用,退出終端后時(shí)間又會(huì)變成原來(lái)的,看來(lái)只能重啟mysql了。
3。重啟mysql也應(yīng)沒有問題,此時(shí)mysql會(huì)主動(dòng)讀取系統(tǒng)時(shí)間。
方法二:
如果mysql數(shù)據(jù)庫(kù)可以重啟,直接重啟,mysql應(yīng)可以立即主動(dòng)讀取系統(tǒng)時(shí)間,如果不行則更改mysql的配置文件(mysql.cnf)
在my.cnf的
[mysqld]區(qū)域中加上
default-time_zone
=
'+8:00'
#此為北京時(shí)。
補(bǔ)充:
如果想臨時(shí)解決時(shí)間顯示問題,可以用php或其他語(yǔ)言動(dòng)態(tài)修改下mysql的時(shí)區(qū)。
具體方法:
在mysql_connect()下使用mysql_query("SET
time_zone
=
'+8:00'")。
這樣可以在保證你不重啟的情況下改變時(shí)區(qū)。但是mysql的某些系統(tǒng)函數(shù)還是不能用如:now()。
MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來(lái)設(shè)置讀取超時(shí)時(shí)間的參數(shù)。在 MySQL 的官方文檔中,該參數(shù)的描述是這樣的:
MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.
也就是說在需要的時(shí)候,實(shí)際的超時(shí)時(shí)間會(huì)是設(shè)定值的 3 倍。但是實(shí)際測(cè)試后發(fā)現(xiàn)實(shí)際的超時(shí)時(shí)間和設(shè)置的超時(shí)時(shí)間一致。
而具體什么時(shí)候發(fā)生三倍超時(shí),在文檔中沒有找到。所以對(duì) MySQL 5.7.20 的源碼進(jìn)行了一些分析。
使用 GDB 調(diào)試代碼找了實(shí)際與 mysql server 通信的代碼,如下:
請(qǐng)點(diǎn)擊輸入圖片描述
其中 vio_read() 函數(shù)中,使用 recv 和 poll 來(lái)讀取報(bào)文和做讀取超時(shí)。net_should_retry() 函數(shù)只有在發(fā)生 EINTR 時(shí)才會(huì)返回 true。從這段代碼來(lái)看是符合測(cè)試結(jié)果的,并沒有對(duì)讀取進(jìn)行三次重試。只有在讀取操作被系統(tǒng)中斷打斷時(shí)才會(huì)重試,但是這個(gè)重試并沒有次數(shù)限制。
從上面代碼的分析可以看出,代碼的邏輯和文檔的描述不符。于是在一頓搜索后,找到了一個(gè) MySQL 的 BUG(Bug #31163)。該 BUG 報(bào)告了在?MySQL?5.0 中,MySQL c api 讀取的實(shí)際超時(shí)時(shí)間是設(shè)置的三倍,與現(xiàn)有文檔描述相符。于是對(duì) MySQL 5.0.96 的代碼又進(jìn)行分析。
同樣使用 GDB 找到了通信部分的代碼。這次找到了重試三次的代碼,如下:
請(qǐng)點(diǎn)擊輸入圖片描述
這個(gè)版本的 MySQL api 的讀寫超時(shí)是直接使用的 setsockopt 設(shè)置的。第一次循環(huán),在 A 點(diǎn)發(fā)生了第一次超時(shí)(雖然注釋寫的非阻塞,但是客戶端的連接始終是阻塞模式的)。然后在 B 點(diǎn)將該 socket 設(shè)置為阻塞模式,C 點(diǎn)這里重置 retry 次數(shù)。由于設(shè)置了 alarm 第二次以后的循環(huán)會(huì)直接進(jìn)入 D 點(diǎn)的這個(gè)分支,并且判斷循環(huán)次數(shù)。作為客戶端時(shí)net-retry_count 始終是 1,所以重試了兩次,共計(jì)進(jìn)行了 3 次 vioread 后從 E 點(diǎn)退出函數(shù)。
由上面的分析可知,MySQL 文檔對(duì)于該參數(shù)的描述已經(jīng)過時(shí),現(xiàn)在的 MYSQL_OPT_READ_TIMEOUT 并不會(huì)出現(xiàn)三倍超時(shí)的問題。而 Bug #31163 中的處理結(jié)果也是將文檔中該參數(shù)的描述更新為實(shí)際讀取超時(shí)時(shí)間是設(shè)定時(shí)間的三倍。也許是 MySQL 的維護(hù)者們?cè)诤罄m(xù)版本更新時(shí)忘記更新文檔吧。
東京的時(shí)區(qū)是東九區(qū),比我們北京東八區(qū)多1個(gè)時(shí)區(qū),所以+9就是東京時(shí)間了
那我們?cè)趺葱薷?,有兩種方法,一種是臨時(shí)的,一種是長(zhǎng)久的。
一:通過sql命令臨時(shí)修改
# 設(shè)置全局時(shí)區(qū) mysql set global time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
# 設(shè)置時(shí)區(qū)為東八區(qū) mysql set time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
# 刷新權(quán)限使設(shè)置立即生效 mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | EST |
| time_zone | +08:00 |
+------------------+--------+
2 rows in set (0.00 sec)
二:修改my.cnf實(shí)現(xiàn)永久修改
vi /etc/mysql/my.cnf
然后在mysqld下邊的配置中添加一行:
default-time_zone = '+8:00'
然后重啟mysql
service mysql restart
怎樣修改mysql中的時(shí)間和日期?
建議你安裝PHPMYADMIN或者M(jìn)YSQL-FRONT這類軟件,用它們來(lái)修改就比較簡(jiǎn)單。
另外一個(gè)辦法,在留言前修改服務(wù)器的系統(tǒng)時(shí)間,這樣保存的留言就是以前的。
具體操作步驟如下:
1、第一步,打開sql數(shù)據(jù)庫(kù),新建一個(gè)表。格式原因,以下的date_time和time_time為日期類型,如圖所示。
2、第二步,若是簡(jiǎn)單的查詢表,那么就會(huì)以日期格式顯示出來(lái),如圖所示。
3、第三步,使用函數(shù)to_char,把查詢?nèi)掌陲@示結(jié)果更改成日期形式,獲得以下結(jié)果,如圖所示。
4、第四步,點(diǎn)擊查詢編輯器選項(xiàng),鍵入以下代碼,如圖所示。
5、第五步,可以看到日期就修改好了,如圖所示。
docker中的mysql時(shí)區(qū)是使用了世界標(biāo)準(zhǔn)時(shí)間(UTC),把時(shí)區(qū)改成東八區(qū)方法:
1、啟動(dòng)容器時(shí)設(shè)置: 添加如下配置:
2、進(jìn)入docker配置:(重啟才能生效--永久生效)
3、臨時(shí)修改(從mysql上修改,重啟失效)
名稱欄目:怎么修改mysql時(shí)間,mysql 修改時(shí)間
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article36/hsdspg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、軟件開發(fā)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)