Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239107
  • 博文数量: 37
  • 博客积分: 325
  • 博客等级: 一等列兵
  • 技术积分: 1199
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-09 00:04
个人简介

坚持原创,虽然有些东西很简单,但也算是一种积累。

文章分类

全部博文(37)

文章存档

2013年(28)

2012年(9)

我的朋友

分类: 系统运维

2013-09-11 15:26:50

        维护一个系统,短信类的。短信内容由后台脚本根据配置文件(时间,短信内容)定期修改。今天有客户投诉说收到的短信全是???号之类。 原来以为是服务器编码或是配置文件编码的问题。查了半天后面发现是mysql 客户端的编码问题。
        数据库编码是latin1,脚本mysql客户端编码原来也是laitn。 数据库与脚本不在同一台服务器上。
        关健是,昨天我在脚本那台服务器上重新安装了一个mysql,并且编码是utf8。以是悲剧就在早上发生了。。。

早上有二个任务符合条件,对短信内容进行了update操作。结果内容全是?????

点击(此处)折叠或打开

  1. echo "开始更改$single_code任务的内容,请稍候"
  2. mysql -h$dbhost -u$dbuser -p$dbpass -D$dbbase <<update
  3. update $dbtables set sms_content="$2" where sms_code=$1

update前增加了一个:set names latin1;  再运行脚本短信内容恢复正常。

点击(此处)折叠或打开

  1. echo "开始更改$single_code任务的内容,请稍候"
  2. mysql -h$dbhost -u$dbuser -p$dbpass -D$dbbase <<update
  3. set names latin1;
  4. update $dbtables set sms_content="$2" where sms_code=$1
怎么说呢。首先这个脚本在后台跑了有一段时间了,所以有点忘了。再者原先脚本里没有加set names latin1 这层保险。以我的教训希望大家在用到类似应用时多点心眼。特别是update的时候,否则你的脚本有可能带来灾难性的故障。 
阅读(3071) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

左手_wanggy2013-09-13 14:10:47

forgaoqiang:哈哈 我们统一编码采用 utf8 没有问题的 楼主要小心哦 
其实数据库本身的存储格式无关紧要 重要的是连接时采用的编码
即使数据库里面是乱码 只要两端一致也是正确的内容滴

是的,吸取教训了。

回复 | 举报

forgaoqiang2013-09-11 20:25:11

哈哈 我们统一编码采用 utf8 没有问题的 楼主要小心哦 
其实数据库本身的存储格式无关紧要 重要的是连接时采用的编码
即使数据库里面是乱码 只要两端一致也是正确的内容滴