前言:今天客户方提出一个bug:调用某接口时出现500
如下:(部分关键数据隐藏)
2021-07-26 10:45:31.873198+0800 ApexWear[5546:579773] ---------- url ----------
http://服务器地址隐藏/接口与请求参数隐藏
2021-07-26 10:45:31.873316+0800 ApexWear[5546:579773] ---------- token ----------
token隐藏
2021-07-26 10:45:31.873355+0800 ApexWear[5546:579773] ---------- 具体参数 ----------
{
type = steps;
}
2021-07-26 10:45:31.873388+0800 ApexWear[5546:579773] ---------- 请求结果 ----------
{
code = 500;
message = "Internal Server error";
}
看到bug后,第一时间连接服务器看log:(mac环境操作)
1.右键终端新建远程连接到服务器
2.输入密码后进入项目部署的地址
该过程所使用的命令如下:
ls(查看当前目录下的文件)
cd /home(进入项目部署的地址)
ls
cd EastApex/(进入项目中)
tail -f app.log(打开最近的log日志,以便查看错误信息)
初步看是索引越界 于是在本地代码中找到对应的地址
检查代码没有什么问题,然后到服务器执行sql(服务器没有映射3306端口 所以不能用工具连接)
查询出来的数据还是少了一条,同时没有ranking的信息,所以我查看了数据表
mysql -uroot -p
密码
show database;(分号一定带上)
use 数据库
show tables;(检索所有的表)
最后发现少了一个表
于是新建一个文件(需要返回到mysql外面 使用exit或者control+c(ctrl+c) control+z(ctrl+z))
vi rankging.sql(新建文件)
i(进入编辑模式)
将sql复制或写入
Esc :wq(:q! :wq将此次编辑内容保存,:q!不保存)
然后
pwd(获取当前地址)
mysql -u用户名 -p
密码
use 数据库
source /root/ranking.sql(执行之前编写的sql文件)
show tables;(检查是否成功)
最后请求再看日志,已经不报错了