知其然,知其所以然
常见报错实测 2026-10-29

MySQL ERROR 1366 Incorrect string value:不只是 emoji,连接字符集错配时汉字不报错却变乱码

实测 MySQL ERROR 1366:建表写 charset=utf8 实际是 utf8mb3,放 emoji、生僻字 𠮷 都报 1366,汉字和 € 不会;连接字符集错配矩阵里 utf8mb4 列 + latin1 连接写汉字不报错、读回 汉;convert to utf8mb4 在 10 万行表上 453 ms,COMPACT 老表撞 767 字节索引上限(1071),先改 DYNAMIC 即可。

MySQL ERROR 1366 Incorrect string value utf8mb4 utf8mb3 emoji 字符集 报错 真实验证 动画演示
常见报错实测 2026-10-29

MySQL ERROR 1153 Got a packet bigger than max_allowed_packet:PyMySQL 里看到的却是 2006,bytes 参数只能放一半

实测 MySQL ERROR 1153:服务器上限 1 MiB 时 PyMySQL 看到的是 2006 加 Broken pipe、命令行客户端才是 1153;整条 SQL 最长 1048574 字节,PyMySQL 的 bytes 参数被拼成十六进制只能放 524271 字节;SET GLOBAL 只对新连接生效,SET SESSION 报 1621;executemany 的 max_stmt_length 是 1024000;客户端限制是 ERROR 2020。

MySQL ERROR 1153 max_allowed_packet ERROR 2006 ERROR 2020 PyMySQL 批量插入 报错 真实验证 动画演示
常见报错实测 2026-10-29

MySQL ERROR 1055 ONLY_FULL_GROUP_BY:关掉它拿到的 name 是组里任意一行,换个索引结果就变

实测 MySQL ERROR 1055 ONLY_FULL_GROUP_BY:关掉它之后 name 是组里任意一行,换成 idx_ds(dept, salary) 索引结果就变(恰好最高薪的部门 8/1000 变成 0/1000);GROUP BY 主键、非空唯一列不报错而可空唯一列报错;20 万行每组取最高薪:ANY_VALUE 全错 147.8 ms,窗口函数 358.9 ms,JOIN 子查询 5.5 ms,相关子查询 5298.3 ms。

MySQL ERROR 1055 ONLY_FULL_GROUP_BY GROUP BY ANY_VALUE 窗口函数 报错 真实验证 动画演示
常见报错实测 2026-10-29

MySQL ERROR 1215 Cannot add foreign key constraint:26.10 上多数情形已改报 3780、6125、1824,只有临时表还报 1215

实测 MySQL ERROR 1215:在 26.10.0 上类型不兼容报 3780,被引用列不是唯一键完整列报 6125,父表打不开报 1824,只有子表是临时表还报 1215;foreign_key_checks=0 绕不过 3780;MyISAM 子表悄悄忽略外键;已有孤儿行加外键报 1452,关掉检查可以硬加但孤儿行还在;1451 与 1452 的方向。

MySQL ERROR 1215 Cannot add foreign key constraint 外键 ERROR 3780 ERROR 6125 ERROR 1452 ERROR 1451 报错 真实验证 动画演示
常见报错实测 2026-10-29

MySQL ERROR 2006 server has gone away 与 2013 Lost connection:各种断法报什么,应答丢了重试为什么会多出一行

实测 MySQL 2006 与 2013:空闲超过 wait_timeout 后下一次使用报 2006 且连接作废;KILL 与 kill -9 服务器中途报 2013,KILL QUERY 报 1317 连接保留;客户端 read_timeout 到期报 2013 但服务器上的查询照常跑完;40 次使用里不检查失败 22 次、recycle 与 ping 都是 0;应答丢失的 INSERT 重试后无唯一键表里变成 2 行。

MySQL ERROR 2006 MySQL server has gone away ERROR 2013 Lost connection to MySQL server wait_timeout 连接池 PyMySQL 报错 真实验证 动画演示
常见报错实测 2026-10-29

Redis MISCONF:BGSAVE 失败后连 PING 都被拒,stop-writes-on-bgsave-error no 只是掩盖问题

实测 Redis MISCONF:BGSAVE 因目录只读失败后,有保存点的实例所有写命令(以及 PING)返回 MISCONF,读命令照常;原因在 redis.log 的 Permission denied;没有保存点或 stop-writes-on-bgsave-error no 都不触发;修好目录后重新 BGSAVE 成功,写自动恢复。

Redis MISCONF stop-writes-on-bgsave-error RDB BGSAVE 持久化 报错 真实验证 动画演示
常见报错实测 2026-10-29

Redis OOM command not allowed when used memory > 'maxmemory':哪些命令被拒,volatile-lru 在没有 TTL 时照样 OOM

实测 Redis OOM command not allowed:maxmemory 20mb 下 noeviction 写 40000 个 1 KB key 成功 15090、报错 24910,used_memory 略超上限;9 类写命令被拒、8 类读删命令照常;DEL 能立刻恢复写;30 MB 的单个 value 直接被拒;allkeys-* 淘汰后 0 次 OOM,volatile-lru 在 key 没有 TTL 时仍然 14900 次 OOM。

Redis OOM command not allowed maxmemory maxmemory-policy noeviction allkeys-lru volatile-lru 内存淘汰 报错 真实验证 动画演示
常见报错实测 2026-10-29

Redis WRONGTYPE:SET 会悄悄覆盖任何类型的 key,事务和 Lua 里出错都不回滚

实测 Redis WRONGTYPE:13 条命令 × 6 种类型的矩阵(每条命令只有一种类型能 ok);TYPE / EXISTS / DEL 等不看类型;SET 与 RENAME 悄悄覆盖任何类型的 key 而 SET NX / COPY 不会;MULTI/EXEC 与 Lua 里出错不回滚;SCAN … TYPE 找出 user:* 里混进来的 3 个字符串 key。

Redis WRONGTYPE Operation against a key holding the wrong kind of value SET 覆盖 MULTI Lua SCAN TYPE 报错 真实验证 动画演示
常见报错实测 2026-10-29

Redis NOAUTH / WRONGPASS / NOPERM:认证前连 PING 都不行,没设密码时 AUTH default 反而成功

实测 Redis NOAUTH / WRONGPASS / NOPERM:认证之前连 PING 都被 NOAUTH,只有 AUTH、RESET、QUIT 能用;密码错、用户名不存在、用户被禁用都是同一条 WRONGPASS;没设密码的实例上 AUTH default x 反而返回 OK;ACL 的三种 NOPERM 文本;改 requirepass 不影响已认证的旧连接;redis-cli -a 的警告与 REDISCLI_AUTH。

Redis NOAUTH WRONGPASS NOPERM requirepass ACL AUTH 报错 真实验证 动画演示
常见报错实测 2026-10-29

Redis DENIED Redis is running in protected mode:bind 成局域网地址也不管用,设密码才行

实测 Redis DENIED protected mode:bind 0.0.0.0 + protected-mode yes + 没设密码,局域网来源的连接一进来就被主动发来 1064 个字符的 DENIED 然后断开,127.0.0.1 正常;设 requirepass 后变成 NOAUTH,AUTH 后可用;bind 成局域网地址不关保护模式;只 bind 127.0.0.1 则连接被拒绝。

Redis DENIED protected mode protected-mode bind requirepass 远程连接 报错 真实验证 动画演示
常见报错实测 2026-10-29

Redis BUSY Redis is busy running a script:BUSY 期间连 INFO 都不能用,写过数据的脚本杀不掉

实测 Redis BUSY:死循环脚本下其它命令先毫无回复、等脚本跑过 busy-reply-threshold(这里 1000 ms)才收到 BUSY;阈值大于慢脚本时别人只是被挂住 1.70 s 后正常返回;BUSY 期间 PING、INFO、CONFIG SET 也全部 BUSY;写过数据的脚本 SCRIPT KILL 返回 UNKILLABLE;FUNCTION 要用 FUNCTION KILL。

Redis BUSY Redis is busy running a script SCRIPT KILL UNKILLABLE lua-time-limit busy-reply-threshold FUNCTION KILL 报错 真实验证 动画演示
常见报错实测 2026-10-29

Python SSL: CERTIFICATE_VERIFY_FAILED:几种原因对应不同修法,别用 CERT_NONE

实测 Python [SSL: CERTIFICATE_VERIFY_FAILED]:默认加载 188 个根证书(来自 OpenSSL 的 cert.pem);自签名 18、缺签发者 20、过期 10、主机名不匹配 62、缺 Authority Key Identifier 85 各是什么;cafile= 或 SSL_CERT_FILE 能解决 CA 不认识和缺中间证书,解决不了过期与主机名;关闭校验会接受冒充者的证书。

Python SSL CERTIFICATE_VERIFY_FAILED certificate verify failed 自签名证书 unable to get local issuer certificate 报错 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号