记录一下自己遇到的各种有趣的BUG.
idea部署项目,404
date: 2018-06-22
IDEA在拉取svn项目部署后,可以成功运行,debug模式下,可以进入controller。但在跳转页面的时候,报错404。
解决:在 “Edit Configurations” 里面找到 “working directory” 选择 “$MODULE_DIR$” 即可。
ORA-01400: cannot insert NULL into (\”TEST\”.\”T_ORDER\”.\”FEE_TYPE\”)
date: 2018-01-31
本地开发环境,项目A HTTP调用项目B,项目B可以插入数据库并返回项目B结果。把项目的上线文档整理后,让运维发布到测试环境,数据报错,Cause: java.sql.SQLException: ORA-01400: cannot insert NULL into。一直纠结在是不是打包问题,oracle版本问题,始终无法解决。
解决:查看上线文档中的sql,比对本地表结构,发现sql不一致!给的我建表sql有问题,修改后解决。
利用CMPP协议发送短信,长短信乱码,发送失败。
date: 2018-01-24
短信运营商提供两种HTTP和CMPP发送短信方式,HTTP比较常见,简单。CMPP是中移动的协议方案,通过socket链接发送数据,我的demo是分别启动两个线程,一个发送线程,一个接受线程,高并发下(测试群发50人,人均10条不同内容,在1s内执行完毕,后续短信均符合要求)完美运行。可是!非常奇怪的是,当发送长短信时,调用失败,对方技术告诉我是,乱码问题。
解决:demo中提交短信内容,Msg_Fmt设置的(byte) 0x15改成 (byte) 0x08,并且content.getBytes(“UTF-16BE”)。1
2
3
4
5
6
7CMPP协议中,Msg_Fmt规定只能为以下值。
0:ASCII串
3:短信写卡操作
4:二进制信息
8:UCS2编码
15:含GB汉字
CMPP协议严格规定了通信参数长度及格式,我建议在demo的基础上微调,新手不要造轮子。
Oracle查询分页有重复数据
date: 2017-11-26
Oracle sql查询分页时,如果排序字段相同数据大于页数,第二页就会有重复现象
解决:sql中,加入主键排序,可以避免此问题(因为主键不会有大量重复的情况,也可以选择一个相对唯一的字段排序)
获取完整SQL语句
date: 2017-11-08
维护两个项目,用的orm一个是hibernate1,一个是ibatis,控制台都不能完整sql,不方便单独运行sql。
解决:从网址找的资料,发现p6spy.jar可以处理,从maven官网下载合适的jar包,和配置文件,项目的oracle.jdbc.driver.OracleDriver更换成p6spy的。源jar包的方法,会把所有的sql全部输出,控制台大量重复sql。可以更改jar包源码,去除重复sql输出。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22package com.p6spy.engine.logging.appender;
public abstract class FormattedLogger {
protected String lastEntry;
private String cache = "";
public FormattedLogger() {}
public void logSQL(int connectionId, String now, long elapsed, String category, String prepared, String sql) {
if("resultset".equals(category) && !this.cache.equals(prepared)) {
String logEntry = "\n" + prepared;
this.cache = prepared;
System.err.println("----sql----");
this.logText(logEntry);
}
}
public abstract void logText(String var1);
public void setLastEntry(String inVar) {this.lastEntry = inVar;}
public String getLastEntry() {return this.lastEntry;}
}