问题
今天写一个接口,在后台执行SQL查询数据库。在PL/SQL中执行完全正常的语句,放到Flask里就是报错:1ORA-00911: invalid character
原因
SQL语句如下:12select t.content from db.T_SMS_MESSAGE twhere t.mobile = '18610011006' order by t.create_date_time desc;
仔细检查了半天,发现SQL没有任何语法问题,在PL/SQL里执行也完全正常。怀疑过是字符编码问题,也排除了。
最终google一下,发现“都是分号惹的祸”!
我写SQL的时候,习惯在结尾处加上一个”;”。但是,在正式执行的时候,不能将这个分号扔到Oracle的解析器中的,因为Oracle的语法解析器特别严格,就会报出以上的错误出来
解决
去掉结尾的分号