注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

ERROR,22021,invalid byte sequence for encoding ""UTF8""  

2011-03-02 17:07:52|  分类: PG案例分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    

              最近发现一个生产库的日志频繁地抛出 ERROR,22021,invalid byte sequence for encoding ""UTF8"" ,

1--数据库csv 日志
2011-03-01 00:28:59.149 CST,"skytf","skytf",27867,"127.0.0.1:41149",4d6bcd09.6cdb,1,"idle in transaction",
2011-03-01 00:27:53 CST,159/515139,108295573,ERROR,22021,"invalid byte sequence for encoding ""UTF8"": 0xf09fe518",,,,,,,,,""

      根据这个信息,猜测可能是字符集没有转换成 "utf8",由于csv日志没有打出报错时相关的SQL语句,不
好分析,于是联系开发人员,希望他们能够找出出错时间的SQL语句。开发人员非常配合,很快找到了相关
SQL。

 

2 --应用程序的日志
2011-02-28 14:54:26,059 /home/liweijing/skytf/gevent2/src/db.py(56): ERROR fail to batch write db. error 'ERROR:
invalid byte sequence for encoding "UTF8": 0xf09fe518 ' in ' INSERT INTO table_log
( host, remoteip, ntime, reqdesc, httpcode, clength, refer, agent, hsman, hstype, imsi, fromcache, loadtime)
VALUES ( '????????', '117.136.16.97', '2011-02-28 14:54:20 ', 'GET HTTP/1.1', 705, 0, '-', 'Sky-Wapproxy/v3.20(page,0-1-1251)', 'dewav', 'L968', '460008857083989', False, 6 ); '

     上面这段是开发人员贴出来的应用程序LOG,很容易发现,在向表 table_log 的字段插入数据时,
host 字段的内容为乱码,即为 "????????" ,正是因为数据为乱码,才导致 PostgreSQL 频繁抛出
ERROR,22021,invalid byte sequence for encoding ""UTF8""

 

3 --解决方法
         既然问题找出来了,解决起来就相对容易了,后来开发人员将字段 host 内容强制转换为 utf8 ,并且
对服务端接收的数据进行检查,如果有非法字符,则丢弃。有了这些措施之后,数据库不再抛出类似ERROR。

  评论这张
 
阅读(27021)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016