诡异的UnicodeEncodeError

一个Django项目在win环境pycahrm下运行的好好的,部署到Linux就出现了编码错误

 涉及的代码段使用了cx_oracle执行sql语句,打印出来粘贴到plsql执行是正常的。

    sql = '''select nvl(s.username, 'None') oracle_user,
       s.logon_time,
       p.username unix_user,
       s.sid,
       s.serial# serial,
       p.spid unix_pid,
       s.status,
       s.process,
       s.osuser,
       s.program,
       s.module,
       s.machine,
       s.event,
       l.SQL_TEXT,
       s.sql_id,
       s.prev_sql_id,
'ps -ef|grep '|| p.spid ||'|grep LOCAL=NO|awk ''{print $2}''|xargs kill -9' kill_sh
  from v$process p, v$session s, v$sql l
 where s.paddr = p.addr  
   and s.SQL_ADDRESS = l.ADDRESS(+)
   and s.SQL_HASH_VALUE = l.HASH_VALUE(+)
   and s.sql_child_number = l.child_number(+)
   and s.sid = %s''' %session_id

    oracle_sessions = tools.oracle_django_query(user,password,url,sql)

在文件头按下面指定字符集没用

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

试了很多种方法都解决不了。

最后还是在错误信息里面发现了一些线索:

看来django的错误提示还是很有用的,虽然出错的原因很难解释,至少给出了错误的地址。之前一直都不太重视,闷头找答案。

更改了sql语句部分后,恢复了正常


 where s.paddr = p.addr and s.SQL_ADDRESS = l.ADDRESS(+)
   and s.SQL_HASH_VALUE = l.HASH_VALUE(+)
   and s.sql_child_number = l.child_number(+)
   and s.sid = %s''' %session_id

猜你喜欢

转载自blog.csdn.net/gumengkai/article/details/82693356