一次部署,耽误了好长时间,对于这种较为经典的问题,记录一下吧!
问题:
本地程序打包,部署到远程服务器,访问同一个接口返回的数据结构不一样;
抓虫子:
1、可能是打的包有问题,再打一次,再打一次,结果跟之前一样;
2、在程序中的几个关键点mapParam.put("a","a")、mapParam.put("b","b"),通过访问接口看能不能全部返回回来,结果本地的都返回回来服务器的也都返回回来了,但是数据结构还是不一样;
3、部署的那个服务器有点问题?那就打个包在公司内网的服务器也部署一个吧,结果返回的数据结构跟本地服务器的一样(本地的是正确的),为什么不一样?
4、可能是数据库的问题,远程服务器中的Oracle数据库中的数据是通过kettle从MySQL数据库实时抽取过来的,我拷贝几条数据放到本地,咦?远程和本地返回来的数据值一样了,但是数据结构还是不一样,一盆冷水;
5、会不会是Nginx负载均衡的问题?关掉一个试试,不行;
6、想到的都试了,还是没解决。日志也看了,没问题啊;不用负载均衡了,都关掉,直接在远程服务器运行jar包,走你┏ (゜ω゜)=☞,再访问一遍,哎呦,报错了,根据错误提示解决问题,嗯,,回家可以睡个好觉了。
总结:当访问同一个接口,本地和远程的服务器返回的数据结构不一样的时候直接找数据库对比数据就OK,一般都是这种原因。至于这一次,因为客户提出PC端页面中的下限指标为0没有意义,让统一成空值,结果在系统中把外网中的下限指标改为空;本地的还没改,当时没发现这种情况。当APP访问这个接口的时候发现数据结构不对(APP专用接口^_^),这是两服务器访问同一个接口返回的数据结构不一样的主要原因
Oracle存储过程插入数字为空的情况!
问题:
Oracle存储过程,变量有值,但是插入语句执行过后表中的那个字段的值仍是空?
抓虫子:
1、看日志,没报错;
2、打印那个变量,看是否有值,结果有;
3、把变量写死,直接在更新语句中写一个数字,结果插进去了;
4、对比数据类型,变量的数据来源的那张表中的类型为number,插入的表中的字段的类型也是number,没问题;
5、我好迷茫,问大神吧,把问题描述一下,截个图发过去;“数据类型一致,变量有值,运行之后数据为空,也就是说在往数据库写入的那一刻这个变量变成空值了,嗯?你这变量名跟字段名一样?把变量名改一下试试”,然后问题解决;
总结:变量名不能跟字段名一样!!!