常见报错实测
2026-11-03
Redis LOADING Redis is loading the dataset in memory:端口 0.02 秒就通、400 万 key 加载约 3 秒,PING 型健康检查会误杀,loading_eta_seconds 开头不准
实测 Redis LOADING Redis is loading the dataset in memory:400 万 key、141.8 MB 的 RDB 启动加载约 3 秒,端口 0.02 秒就通;加载期间 PING、GET、SET、DBSIZE、KEYS 被拒而 INFO、CONFIG GET、PUBLISH 可用;loading_eta_seconds 开头不准;从库全量同步同样 LOADING,swapdb 在本机没有观察到 async_loading。
Redis
LOADING
loading the dataset in memory
RDB
loading_eta_seconds
健康检查
repl-diskless-load
swapdb
报错
真实验证
动画演示
常见报错实测
2026-11-03
Redis CROSSSLOT Keys in request don't hash to the same slot:同节点不同槽位也报,19 个多 key 命令全部受限,固定 hash tag 让 3000 个 key 全进一个节点
实测 Redis CROSSSLOT Keys in request don't hash to the same slot:同节点不同槽位也报;19 个多 key 命令全部 CROSSSLOT;hash tag 的规则(空花括号、多对花括号);MULTI/EXEC 到 EXEC 才报,Lua 偷用其它节点的 key 是另一种错误;固定 tag 让 3000 个 key 全进一个节点。
Redis
CROSSSLOT
Redis Cluster
hash tag
MGET
MSET
CLUSTER KEYSLOT
Lua
报错
真实验证
动画演示
常见报错实测
2026-11-03
SQLite database is locked:读后写的延迟事务升级锁时 timeout=10 也 0.0 ms 立刻失败,WAL 模式 8 线程读后写失败 1372/1600、BEGIN IMMEDIATE 为 0
实测 SQLite database is locked:timeout 0、1、5 秒的等待行为;DELETE 与 WAL 下谁挡谁(WAL 解决不了写挡写);读锁升级写锁时 timeout 10 秒也 0.1 ms 立刻失败;Python 默认事务忘了 commit 会一直握着写锁;8 线程读后写 WAL + BEGIN 失败 1372/1600,BEGIN IMMEDIATE 为 0。
SQLite
database is locked
sqlite3
WAL
BEGIN IMMEDIATE
busy_timeout
Python
journal_mode
报错
真实验证
动画演示
常见报错实测
2026-11-03
Python RecursionError: maximum recursion depth exceeded:默认第 999 层失败,setrecursionlimit 设到一千万纯 Python 递归 500 万层照常跑(约 607 MiB),json/repr 的深递归仍报 Stack overflow (used 16352 kB)
实测 Python RecursionError: maximum recursion depth exceeded:默认上限 1000、第 999 层失败;经过 C 的 json/repr/比较改报 Stack overflow (used 16352 kB);setrecursionlimit 设 1000 万后纯 Python 递归 500 万层照常运行(约 607 MiB,没有段错误);线程栈大小无关;尾递归与 lru_cache 无效,迭代才是修法。
Python
RecursionError
maximum recursion depth exceeded
sys.setrecursionlimit
Stack overflow
递归
报错
真实验证
动画演示
常见报错实测
2026-11-03
RabbitMQ PRECONDITION_FAILED - inequivalent arg:整数 5000 和字符串 "5000" 报 received '5000' but current is '5000',只关闭 channel,改成 quorum 只能删除重建(5 条消息丢失)
实测 RabbitMQ PRECONDITION_FAILED - inequivalent arg:TTL、durable、x-queue-type、交换机 type 等改动的 406 原文;整数 5000 与字符串 "5000" 报 received '5000' but current is '5000';只关闭 channel、未 ack 的消息回队列;passive 声明不比较参数;policy 管参数可随时改;改队列类型只能删除重建(5 条消息丢失)。
RabbitMQ
PRECONDITION_FAILED
inequivalent arg
406
x-message-ttl
x-queue-type
policy
channel
报错
真实验证
动画演示
常见报错实测
2026-11-03
MySQL ERROR 1213 Deadlock found when trying to get lock:反向更新 2 ms 检测并整个事务回滚,RR 下先 SELECT FOR UPDATE 再 INSERT 也死锁,统一加锁顺序让 1213 从 1034 次降到 0
实测 MySQL ERROR 1213 Deadlock found:反向更新两行 2 ms 检测、整个事务回滚;改得少的事务被选为牺牲品;RR 下先 SELECT FOR UPDATE 再 INSERT 的间隙锁死锁,RC 下变成 1062;INNODB STATUS 怎么读,innodb_print_all_deadlocks 需要 log_error_verbosity=3;随机顺序 1034 次 1213,升序为 0;关闭 innodb_deadlock_detect 后两边都等满 3 秒失败。
MySQL
1213
Deadlock found when trying to get lock
InnoDB
间隙锁
innodb_print_all_deadlocks
innodb_deadlock_detect
报错
真实验证
动画演示
常见报错实测
2026-11-03
curl 常见错误码 (6)(7)(28)(35)(52)(56)(60) 实测:404 不加 -f 退出码是 0,-k 只是跳过验证,--retry 默认不重试 52、56、7
实测 curl 常见错误码 6、7、28、1、3、18、22、23、35、47、52、56、60:每个用本机小服务复现原文;28 的三种说法;404 不加 -f 退出码是 0;-k 只是跳过验证;--retry 默认只重试超时与 HTTP 500/503,52、56、7 默认不重试,--retry-all-errors 才会。
curl
curl 错误码
curl (6)
curl (7)
curl (28)
curl (35)
curl (52)
curl (56)
curl (60)
--retry
报错
真实验证
动画演示
常见报错实测
2026-11-03
MongoDB Sort exceeded memory limit (code 292):9.0.4 默认落盘所以 130 MB 排序不再报,显式 allowDiskUse(false) 才报,$sort 与 $group 措辞不同,加 limit(10) 只要 0.09 s
实测 MongoDB Sort exceeded memory limit(code 292):9.0.4 上 allowDiskUseByDefault 默认为真,无索引排序 130 MB 默认成功(usedDisk=True);显式 allowDiskUse(false) 才报,$sort 与 $group 措辞不同;索引、limit、缩小投影、调大上限四种修法的耗时;关掉默认落盘后不写 allowDiskUse 也报。
MongoDB
Sort exceeded memory limit
QueryExceededMemoryLimitNoDiskUseAllowed
allowDiskUse
allowDiskUseByDefault
$group
排序
报错
真实验证
动画演示
常见报错实测
2026-10-29
MySQL ERROR 1040 Too many connections:SET GLOBAL wait_timeout 回收不了已经连着的闲置连接,先看是谁占着名额
实测 MySQL ERROR 1040:max_connections=5 时第 6 个普通连接报 (1040, Too many connections),root 多一个名额;空闲的 Sleep 连接照样占名额;SET GLOBAL max_connections 立即生效,SET GLOBAL wait_timeout 只对新连接生效,老连接 5 秒后仍全部活着;20 个线程各自连失败 16 个,4 个连接的连接池全部成功。
MySQL
ERROR 1040
Too many connections
max_connections
wait_timeout
连接池
报错
真实验证
动画演示
常见报错实测
2026-10-29
MySQL ERROR 1205 Lock wait timeout exceeded:默认只回滚超时那一条语句,改别的行也可能被堵
实测 MySQL ERROR 1205:默认只回滚超时的那一条语句、事务还开着(innodb_rollback_on_timeout=ON 才整个回滚);用 sys.innodb_lock_waits 找到 Sleep 状态没提交的堵人事务,KILL 后等的人 1.52 s 成功;WHERE 没有索引时 6 个记录锁锁住全表,有索引只有 3 个;死锁 1213 约 1.1 ms 就报,和 1205 的 2.01 s 不同。
MySQL
ERROR 1205
Lock wait timeout exceeded
innodb_lock_wait_timeout
行锁
死锁
报错
真实验证
动画演示
常见报错实测
2026-10-29
MySQL ERROR 1062 Duplicate entry:Abc 和 abc 也算重复,REPLACE 会让 id 变,失败的 INSERT 还会吃掉自增 id
实测 MySQL ERROR 1062 Duplicate entry:报错文本里 for key 是 表名.索引名;默认排序规则下 Abc/abc、e/é 算重复而末尾空格不算,utf8mb4_bin 反过来;多行 INSERT 一行冲突整条失败,INSERT IGNORE 悄悄丢新值;REPLACE 让 id 从 1 变成 5;失败的 INSERT 也消耗自增 id;8 线程先查后插表里 400 行,有唯一索引则 1062 出现 350 次、只留 50 行。
MySQL
ERROR 1062
Duplicate entry
唯一索引
INSERT IGNORE
ON DUPLICATE KEY UPDATE
REPLACE
自增id
报错
真实验证
动画演示
常见报错实测
2026-10-29
MySQL ERROR 1406 Data too long for column:长度按字符算,关掉严格模式就变成悄悄截断,加宽列跨过 255 字节要重建表
实测 MySQL ERROR 1406:varchar 长度按字符算,5 个 emoji(20 字节)放得进 varchar(5);严格模式下超长整条语句失败,sql_mode 为空时变成 Warning 1265 悄悄截断;相邻的 1264、1074(varchar 最大 16383)、TEXT 65535 字节;缩列报 1265;20 万行表加宽 varchar,不跨 255 字节 1 ms,跨过就要 COPY 271 ms。
MySQL
ERROR 1406
Data too long for column
sql_mode
STRICT_TRANS_TABLES
varchar
ALTER TABLE
报错
真实验证
动画演示