知其然,知其所以然
常见报错实测 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 报错 真实验证 动画演示
常见报错实测 2026-10-29

Python UnicodeDecodeError: 'utf-8' codec can't decode byte:默认编码、errors 选项与 BOM

实测 Python UnicodeDecodeError:invalid continuation byte(GBK 常见)、invalid start byte、unexpected end of data 各自的字节;Python 3.15.0 里即使 LC_ALL=C,open() 默认编码仍是 utf-8;逐个候选解码时“不报错”不等于“对”;errors=surrogateescape 是唯一能还原原字节的;UTF-8 BOM 让 json.load 报错、让 csv 列名带 \ufeff。

Python UnicodeDecodeError utf-8 codec can't decode byte invalid start byte invalid continuation byte GBK BOM utf-8-sig 报错 真实验证 动画演示
常见报错实测 2026-10-29

pip externally-managed-environment:是什么拦住的,--user 为什么也不行,venv 要多少成本

实测 pip externally-managed-environment:Homebrew 的 Python 3.15.0 在标准库目录放了 EXTERNALLY-MANAGED 标记文件;pip install、install --user、uninstall 被拦,--target / --prefix / 只读命令放行;venv 创建约 1.90 s、11.8 MB,里面没有标记;--break-system-packages 与 PIP_BREAK_SYSTEM_PACKAGES=1 等价,会写进 Homebrew 的 site-packages。

Python pip externally-managed-environment PEP 668 Homebrew venv break-system-packages 报错 真实验证 动画演示
常见报错实测 2026-10-29

asyncio.run() cannot be called from a running event loop:不装 nest_asyncio 的几种正确写法

实测 asyncio.run() cannot be called from a running event loop:async 里调用 asyncio.run 与 run_until_complete 的两种报错,忘括号是另一个 TypeError;asyncio REPL(同 Jupyter 机制)里必须顶层 await;await、gather、to_thread 里 asyncio.run 的写法都是 0.20 s;同步封装怎么判断是否有运行中的循环;no running event loop、Event loop is closed、bound to a different event loop 的复现。

Python asyncio asyncio.run() cannot be called from a running event loop RuntimeError Jupyter 事件循环 报错 真实验证 动画演示
常见报错实测 2026-10-29

RuntimeWarning: coroutine was never awaited:警告为什么指错位置,if 里漏 await 条件永远为真

实测 Python RuntimeWarning: coroutine was never awaited:默认警告指向 asyncio/events.py 而不是你的行,-X tracemalloc 与 -X dev 才给创建位置,-W error 变不成异常;asyncio.sleep(1) 没 await 只用 0.0046 s;if 里漏 await 条件永远为真;没人管的 create_task 在 asyncio.run 结束时丢掉;async 里 time.sleep 三个任务 0.61 s 对 0.20 s。

Python asyncio RuntimeWarning coroutine was never awaited await create_task time.sleep 报错 真实验证 动画演示
常见报错实测 2026-10-29

Git push 被拒 (fetch first / non-fast-forward):pull、rebase 各改了什么,--force-with-lease 在 fetch 之后仍会覆盖别人的提交

实测 Git push 被拒 ! [rejected] non-fast-forward / fetch first:两个括号的区别,pull 合并与 pull --rebase 各改了什么(哈希 8a852e3 变 bbc4ebe),--force-with-lease 在 fetch 之后仍会覆盖对方提交,git pull 分叉时的 fatal,以及 [remote rejected] 与 [rejected] 的区别。

Git git push non-fast-forward fetch first force-with-lease rebase 报错 真实验证 动画演示
常见报错实测 2026-10-29

Git You are in 'detached HEAD' state:切走时只有一条警告,游离提交 reflog 能找回,gc 之后就没了

实测 Git “You are in detached HEAD state”:HEAD 文件变成了哈希,游离状态下提交再切走只有一条警告,main 里没有它;reflog 能找回,手动过期并 gc 之后 Not a valid object name;checkout 标签、远程分支、变基、子模块也会游离;怎么保住提交。

Git detached HEAD git checkout git switch reflog 报错 真实验证 动画演示
常见报错实测 2026-10-29

Git CONFLICT (content):rebase 里 --ours/--theirs 和 merge 相反,-X ours 悄悄丢改动,rerere 实测

实测 Git CONFLICT (content): Merge conflict:merge、rebase、stash pop、cherry-pick 的收尾命令各不同;rebase 里 --ours 与 --theirs 和 merge 相反;UU、AA、UD 状态码对应哪种冲突;zdiff3、-X ours(悄悄丢改动)、rerere 的实际效果。

Git merge conflict CONFLICT (content) rebase stash pop cherry-pick rerere 报错 真实验证 动画演示
常见报错实测 2026-10-29

Git fatal: refusing to merge unrelated histories:push 先报 fetch first,pull --rebase 反而成功,允许之后仍有两个根

实测 Git fatal: refusing to merge unrelated histories:本地 git init 再关联有 README 的远程时的完整报错顺序(push 先报 fetch first,pull 再报 divergent,--no-rebase 才报 unrelated),pull --rebase 反而成功;--allow-unrelated-histories 后根提交仍是 2 个,同名 README 是 add/add 冲突;重新 init 后根提交哈希 7a4645e 变 357531c。

Git refusing to merge unrelated histories allow-unrelated-histories git pull git init 报错 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号