维护一个系统,短信类的。短信内容由后台脚本根据配置文件(时间,短信内容)定期修改。今天有客户投诉说收到的短信全是???号之类。 原来以为是服务器编码或是配置文件编码的问题。查了半天后面发现是mysql 客户端的编码问题。
数据库编码是latin1,脚本mysql客户端编码原来也是laitn。 数据库与脚本不在同一台服务器上。
关健是,昨天我在脚本那台服务器上重新安装了一个mysql,并且编码是utf8。以是悲剧就在早上发生了。。。
早上有二个任务符合条件,对短信内容进行了update操作。结果内容全是?????
-
echo "开始更改$single_code任务的内容,请稍候"
-
mysql -h$dbhost -u$dbuser -p$dbpass -D$dbbase <<update
-
update $dbtables set sms_content="$2" where sms_code=$1
update前增加了一个:set names latin1; 再运行脚本短信内容恢复正常。
-
echo "开始更改$single_code任务的内容,请稍候"
-
mysql -h$dbhost -u$dbuser -p$dbpass -D$dbbase <<update
-
set names latin1;
-
update $dbtables set sms_content="$2" where sms_code=$1
怎么说呢。首先这个脚本在后台跑了有一段时间了,所以有点忘了。再者原先脚本里没有加set names latin1 这层保险。以我的教训希望大家在用到类似应用时多点心眼。特别是update的时候,否则你的脚本有可能带来灾难性的故障。
阅读(3071) | 评论(2) | 转发(0) |