Linux cron执行MySQL失败的问题解决方案

数据库 MySQL
本文我们主要介绍了一个Linux cron执行MySQL失败的实例的问题解决方案,通过这个实例让我们一起来了解一下这类问题的解决吧。

Linux cron执行MySQL失败的实例的问题解决方案是本文我们主要要介绍的,接下来就让我们一起来了解一下这部分内容吧。

1.首先,为了统计服务器平均在线人数,于是写了个SHELL脚本,每天7点-0点之间每小时执行该命令,获得当前在线用户,以便统计最高在线用户,以及平均在线用户.

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. # 获得当前小时  
  16. THEHOUR=`date +%H`  
  17.  
  18. # 更新当前小时的现在人数  
  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脚本,在本地以及远程服务器上,通过 source time08_23.sh 以及 ./time08_23.sh 都能正确运行,数据无误,一切正常。

3.但以上脚本使用cron任务调度器执行数据库却没有数据,这样我一度认为是任务调度器配置错误,或者权限问题,但查询错误日志获得以下信息:

  1. Character set 'ascii' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index.xml'   
  2. <img src='http://hi.csdn.net/attachment/201108/25/0_1314264038vkzR.gif' /> 

 

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编码集设置:

  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官网,对于该问题的解决办法如下: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 

 

问题应该算是明确了.按照我的理解,linux cron 在编译shell脚本的时候,应该采用的是latin1字符集.而这里却使用UTF-8,导致编码不支持.遂联系那边运维,取得了my.cnf,以及mysql的root权限.

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. 关闭mysql服务的命令是:   
  4. ./mysqladmin -u root -p shutdown 

 

按照以上的步骤操作,问题就解决了。

关于Linux cron执行MySQL失败的问题解决方案的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. MySQL死锁问题实例分析及解决方法
  2. MySQL数据库丢失root密码后该如何补救?
  3. Debian+vsftpd+MySQL实现虚拟用户zz详解
  4. MySQL支撑百万级流量高并发的网站部署详解
  5. MySQL数据库TIMESTAMP设置默认值的几个应用实例
责任编辑:赵鹏 来源: CSDN博客
相关推荐

2011-08-10 13:46:36

Navicat MySMySQL

2010-03-30 16:04:34

Linux Nginx

2012-05-09 10:08:41

跨机房

2020-05-06 14:14:50

Linux依赖软件

2010-09-27 13:14:42

JVM内存限制

2009-10-28 11:27:49

linux服务器安全

2010-05-04 11:30:29

Oracle汉字长度

2009-09-03 16:09:48

.net回车符

2010-10-08 13:09:38

JavaScript数

2010-05-31 12:53:56

Nagios apac

2010-02-06 14:54:11

C++指针漂移

2010-04-28 19:24:17

Hp unix

2011-03-23 16:38:28

LAMP

2010-08-04 10:20:30

Flex组件开发

2010-04-06 09:33:37

CentOS系统

2021-01-13 10:18:29

SocketNetty粘包

2010-09-07 09:08:03

DIV弹出层

2010-10-09 12:58:59

JS脚本兼容

2010-09-15 14:14:29

IE6position

2010-07-30 12:40:00

Flex跨域访问
点赞
收藏

51CTO技术栈公众号