⚖️ Error comparisons
Errors that look alike but need different fixes.
301 vs 302: Permanent vs Temporary Redirect
Both send the visitor to another URL. 301 says the move is permanent (update your links and index), 302 says it is temp…
401 vs 403: Unauthorized vs Forbidden
Both mean “you can’t have this”, but for different reasons. 401 says the server doesn’t know who you are; 403 says it k…
400 vs 422: Bad Request vs Unprocessable Content
400 means the request couldn’t be parsed or is structurally invalid. 422 means it parsed fine but the data fails valida…
Cloudflare 525 vs 526: SSL Handshake Failed vs Invalid SSL Certificate
Both are TLS problems between Cloudflare and your origin. 525 means TLS couldn’t even be negotiated; 526 means it was n…
Authentication vs Authorization
Authentication verifies identity (who you are). Authorization decides permissions (what you can do). Errors in each lay…
406 vs 415: Not Acceptable vs Unsupported Media Type
Both are content-type mismatches, in opposite directions. 406 is about the response format you asked for (Accept); 415…
404 vs 410: Not Found vs Gone
404 means nothing is at this URL (maybe temporarily, maybe never). 410 means something was here and was removed on purp…
MySQL 1045 vs 2002: Access Denied vs Can’t Connect
2002 means the client never reached the MySQL server. 1045 means it reached the server, and the server rejected the log…
500 vs 502: Internal Server Error vs Bad Gateway
A 500 comes from the application itself failing. A 502 comes from a proxy (Nginx, load balancer, CDN) that couldn’t get…
412 vs 428: Precondition Failed vs Precondition Required
Both protect against lost updates. 428 means you didn’t send a condition at all; 412 means you sent one (If-Match) and…
502 vs 504: Bad Gateway vs Gateway Timeout
Both come from a proxy. 502 means the upstream gave a bad (or no) response; 504 means the upstream was too slow and the…
ECONNREFUSED vs ECONNRESET vs ETIMEDOUT
Three network failures at different moments: refused (nothing listening), reset (connection closed abruptly mid-use), t…
Segmentation fault vs Killed (OOM): exit 139 vs 137
Both end a process abruptly without a normal error. A segfault is a memory-access bug inside the program; an OOM kill i…
Duplicate key: PostgreSQL 23505 vs MySQL 1062
The same problem — a unique/primary key collision — reported differently by the two databases, with different upsert sy…
ERR_REQUIRE_ESM vs "Cannot use import statement outside a module"
Two sides of the same ESM/CommonJS mismatch: CommonJS code requiring an ESM package, vs ESM syntax running in a CommonJ…
Pod Pending vs CrashLoopBackOff
Pending means the pod never got a node (or never started). CrashLoopBackOff means it started and keeps dying.