91在线一级黄片|91视频在线观看18|成人夜间呦呦网站|91资源欧美日韩超碰|久久最新免费精品视频一区二区三区|国产探花视频在线观看|黄片真人免费三级片毛片|国产人无码视频在线|精品成人影视无码三区|久久视频爱久久免费精品

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux cron執(zhí)行MySQL失敗的問題解決方案

Linux cron執(zhí)行MySQL失敗的實(shí)例的問題解決方案是本文我們主要要介紹的,接下來就讓我們一起來了解一下這部分內(nèi)容吧。

1.首先,為了統(tǒng)計(jì)服務(wù)器平均在線人數(shù),于是寫了個(gè)SHELL腳本,每天7點(diǎn)-0點(diǎn)之間每小時(shí)執(zhí)行該命令,獲得當(dāng)前在線用戶,以便統(tǒng)計(jì)最高在線用戶,以及平均在線用戶.

SHELL腳本如下:

 
 
 
  1. time08_23.sh  
  2. -----------------------------------------------------------------------------------  
  3.  
  4. #!/bin/bash  
  5. # crontab -e 57 7-22 * * * /home/nemo/crontab/time08_23.bash  
  6. DB_USER="root" 
  7. DB_PASS="***" 
  8. DB_HOST="localhost" 
  9. DB_PORT="3306" 
  10. # Others vars  
  11. BIN_DIR="/usr/bin" 
  12. # TODO  
  13. # 獲得8080端口  
  14. THETIME=`netstat -ant | grep 8080 | wc -l`  
  15. # 獲得當(dāng)前小時(shí)  
  16. THEHOUR=`date +%H`  
  17.  
  18. # 更新當(dāng)前小時(shí)的現(xiàn)在人數(shù)  
  19. $BIN_DIR/mysql -u$DB_USER -p$DB_PASS -h$DB_HOST -P$DB_PORT << EOF 
  20. use wapgame4sky2;  
  21. UPDATE MgrSky SET time$THEHOUR = $THETIME WHERE TO_DAYS(date) = TO_DAYS(now());  
  22. EOF 

2.以上的SHELL腳本,在本地以及遠(yuǎn)程服務(wù)器上,通過 source time08_23.sh 以及 ./time08_23.sh 都能正確運(yùn)行,數(shù)據(jù)無誤,一切正常。

3.但以上腳本使用cron任務(wù)調(diào)度器執(zhí)行數(shù)據(jù)庫卻沒有數(shù)據(jù),這樣我一度認(rèn)為是任務(wù)調(diào)度器配置錯(cuò)誤,或者權(quán)限問題,但查詢錯(cuò)誤日志獲得以下信息:

 
 
 
  1. Character set 'ascii' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml'   
  2.  

4.分析一下便清楚是編碼格式的問題.于是逐步查詢問題所在.

 
 
 
  1. show variables like '%char%';  
  2. +--------------------------+----------------------------+  
  3. | Variable_name            | Value                      |  
  4. +--------------------------+----------------------------+  
  5. | character_set_client     | utf8                       |  
  6. | character_set_connection | utf8                       |  
  7. | character_set_database   | utf8                       |  
  8. | character_set_filesystem | binary                     |  
  9. | character_set_results    | utf8                       |  
  10. | character_set_server     | latin1                     |  
  11. | character_set_system     | utf8                       |  
  12. | character_sets_dir       | /opt/mysql/share/charsets/ |  
  13. +--------------------------+----------------------------+ 

查看本地mysql編碼集設(shè)置:

 
 
 
  1. +--------------------------+----------------------------+  
  2. | Variable_name            | Value                      |  
  3. +--------------------------+----------------------------+  
  4. | character_set_client     | latin1                     |  
  5. | character_set_connection | latin1                     |  
  6. | character_set_database   | latin1                     |  
  7. | character_set_filesystem | binary                     |  
  8. | character_set_results    | latin1                     |  
  9. | character_set_server     | latin1                     |  
  10. | character_set_system     | utf8                       |  
  11. | character_sets_dir       | /usr/share/mysql/charsets/ |  
  12. +--------------------------+----------------------------+ 

然后,查詢mysql官網(wǎng),對(duì)于該問題的解決辦法如下:http://dev.mysql.com/doc/refman/5.0/en/charset-configuration.html

 
 
 
  1. [client]  
  2. character-sets-dir=/usr/local/mysql/share/mysql/charsets  
  3. [client]  
  4. character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.0/share/charsets" 
  5.  
  6. Character set 'charset_name' is not a compiled character set and is not  
  7. specified in the '/usr/share/mysql/charsets/Index.xml' file  
  8. [client]  
  9. default-character-set=charset_name 

問題應(yīng)該算是明確了.按照我的理解,linux cron 在編譯shell腳本的時(shí)候,應(yīng)該采用的是latin1字符集.而這里卻使用UTF-8,導(dǎo)致編碼不支持.遂聯(lián)系那邊運(yùn)維,取得了my.cnf,以及mysql的root權(quán)限.

5.修改vi /etc/my.cnf,在[client]下添加,default-character-set=latin1,在[mysqld]下添加,default-character-set=latin1,重啟mysql。

開啟mysql命令:

 
 
 
  1. /usr/local/mysql/bin   
  2. ./mysqld_safe &   
  3. 關(guān)閉mysql服務(wù)的命令是:   
  4. ./mysqladmin -u root -p shutdown 

按照以上的步驟操作,問題就解決了。

關(guān)于Linux cron執(zhí)行MySQL失敗的問題解決方案的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. MySQL死鎖問題實(shí)例分析及解決方法
  2. MySQL數(shù)據(jù)庫丟失root密碼后該如何補(bǔ)救?
  3. Debian+vsftpd+MySQL實(shí)現(xiàn)虛擬用戶zz詳解
  4. MySQL支撐百萬級(jí)流量高并發(fā)的網(wǎng)站部署詳解
  5. MySQL數(shù)據(jù)庫TIMESTAMP設(shè)置默認(rèn)值的幾個(gè)應(yīng)用實(shí)例

本文標(biāo)題:Linux cron執(zhí)行MySQL失敗的問題解決方案
鏈接地址:http://m.jiaoqi3.com/article/dpjidoc.html