📄 一句话概括
错误日志=数据库的病历本:什么时候、错了什么、错在哪——出故障时它是第一条线索,不出故障时它是体检报告。
📝 本节和前面几节的关系
6-5 把日志归在「监控三仪表」里,本节单独立传深挖:错误日志是 7-3「先恢复后复盘」中复盘的第一手材料,也是 7-5(错误分类)和 7-6(慢查询)的入口——先有记录,才谈得上分析。
一、错误日志里有什么
- 报错信息:错误码+描述(如「no such table: books」——表名打错了)
- 发生时间:精确到秒,可与审计日志(6-5)交叉定位
- 出错语句/上下文:哪条 SQL、哪个连接
- 严重级别:致命/错误/警告/提示——看日志先看级别
二、读日志的正确姿势
- 由新到旧:故障刚发生,最新的最先看
- 由高到低:先致命/错误,再警告——大量警告有时是更大故障的前兆
- 找重复模式:同一条错误每分钟出现一次=某个定时任务在反复失败
- 交叉对照:错误时间点+操作历史 → 定位是谁、哪条语句引发
三、动手 Demo:亲手攒一份错误病历
-- 沿用 6-5 的 audit_log 思路,这次记「错误」
CREATE TABLE error_log (
id INTEGER PRIMARY KEY,
level TEXT, -- 致命/错误/警告
msg TEXT,
at TEXT
);
-- 场景:一次查询报了「表不存在」
INSERT INTO error_log (level, msg, at)
VALUES ('错误', 'no such table: book_review2.books', datetime('now'));
-- 复盘:查最近一天的所有「错误」级别记录
SELECT * FROM error_log
WHERE level IN ('致命', '错误') AND at >= datetime('now', '-1 day')
ORDER BY at DESC;
【准备块】在线 SQLite 运行器即可重放。
四、30 秒实验
打开你电脑的「事件查看器」(Windows)/ 控制台报错——操作系统也有自己的「病历本」。体会一件事:报错信息不是废话,第一行通常就写着病名。养成「报错先读原文」的习惯,学 SQL 也一样。
五、常见误区
- 「日志=出事后才看」:日常巡检才能把小错拦在大病之前(6-5 红线思维)
- 「日志无限保存」:要定保留期与轮转,否则日志本身吃光磁盘(6-5 老坑)
- 「只看自己的日志」:操作系统日志、应用日志、数据库日志要对时间线才能拼出完整案情
自测三问
1. 读错误日志的四个姿势?(由新到旧、由高到低、找重复模式、交叉对照操作历史) 2. 错误日志与 6-5 审计日志的分工?(审计记「谁做了什么」;错误日志记「系统哪里坏了」) 3. 同一条错误周期性出现说明什么?(某个定时/循环任务在反复失败——找重复模式的意义)- ☐ 下一节(7-5 语法错误、资源不足-错误的种类与对策)
相关笔记
- 操作历史、日志、资源-监控数据库 —— 日志体系的总纲,本节细分其一
- 人的威胁-对系统产生恶劣影响的问题3-人的威胁示例与对策 —— 复盘的第一手材料就是这里
- 语法错误、资源不足-错误的种类与对策 —— 下一节:给错误分门别类
- 🗄️ 数据库基础 · 索引 —— 全课路线图