Products · Product
MySQL
Raised as a usability problem by 59 people on Hacker News over 18 years (2009–2026), in 59 threads.
No issue was raised by at least 3 people in 3 threads this year.
Every issue, all time, most people first
Confusing utf8 vs utf8mb4 naming and easy-to-get-wrong defaultsUnreviewed
20092026- Misleadingly named utf8 type silently can't hold all Unicode characters2024-12-23
- Utf8mb4 not default and indexing fails depending on row format, many gotchas2023-08-09
- Confusing utf8 vs utf8mb4 naming and surprising defaults that are easy to get wrong2023-04-30
Silently truncates data and inserts zeros instead of erroringUnreviewed
20092026- Out-of-range values are silently accepted without warning, so bad data goes unnoticed2021-12-07
- Silently truncates data on overflow unless a non-default setting is known and changed2017-09-05
- Silently truncates data and inserts zero values instead of erroring, causing unsafe and counter-intuitive results2016-01-18
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Rejects a standard password ending in '!!' with no clear explanation of why2026-03-26
- Docs and release notes lag or omit changes; can't tell what changed2026-02-05
- MySQL upgrades and troubleshooting are much more painful than managed Aurora2025-10-29
- Retry-worthy errors are reported in confusing, inconsistent ways, forcing workarounds2025-09-11
- Stored procedures in MySQL were almost impossible to debug2025-08-16
- Schema changes are risky, so teams must avoid them in business hours or use external tools2025-02-12
- Misleadingly named utf8 type silently can't hold all Unicode characters2024-12-23
- Adding replicas and verifying sync requires poor mysqldump workflow and missing tooling2024-03-29
- Pushdown optimization causes nearly impossible to debug behavior during migration2023-09-21
- Utf8mb4 not default and indexing fails depending on row format, many gotchas2023-08-09
- CSV export options can't produce correct output for quoted, multiline text2023-05-14
- Confusing utf8 vs utf8mb4 naming and surprising defaults that are easy to get wrong2023-04-30
- Many overlapping data types with small differences take a week to learn2023-04-18
- Native C API is atrocious to use, compared with SQLite's2022-09-07
- Syntax error messages are next to useless for diagnosing bad queries2022-03-18
- Error messages confuse the commenter more than Oracle's do2022-03-18
- Imports silently ignore constraints, so users get no warning their data breaks rules2022-01-18
- Out-of-range values are silently accepted without warning, so bad data goes unnoticed2021-12-07
- Common SQL tasks that just work in Postgres are a pain in MySQL2021-12-06
- Building aggregated time series rollups in MySQL felt like a massive kludge at every step2021-12-06
- Optimiser handles non-trivial queries poorly, forcing workarounds in application code2021-12-06
- Silently truncates group_concat output with no error, so returned data can be incomplete2021-12-01
- Doesn't display long lines properly and has difficult history editing2021-11-10
- Getting MySQL running failed outright, and everything outside the happy path was confusing and fragile2021-09-06
- Retrieved times silently shift to the session time zone, needing unwieldy casts to get the real date2021-08-22
- Same user at different addresses or auth methods gets different permissions, which is confusing to manage2021-02-27
- Long statements garble on screen, history barely works, and editing long statements is cumbersome2020-11-16
- Single-page docs bury CONCAT() so people can't find a specific function2019-10-18
- Silently accepts invalid GROUP BY queries and returns results, hiding the user's mistakes2019-05-09
- No reasonable way to debug inherited MySQL stored procedures2019-01-22
- Unexpected default behaviors keep surprising users, such as broken utf8 and quote escaping2019-01-02
- Replication with binlog positions is unreliable and hard to get working2018-09-22
- Confusing 'utf8' name led to misleading advice and frustration over collation2018-06-14
- EXPLAIN output is barely usable for understanding query plans2018-04-07
- Silently truncates data on overflow unless a non-default setting is known and changed2017-09-05
- Default latin1 encoding silently corrupts UTF-8 text, causing hard-to-spot bugs later2017-07-12
- Attaching option values without a space behaves unexpectedly, confusing users about how flags are parsed2016-10-12
- Utf8 charset silently stores only three-byte characters, so you need utf8mb42016-10-02
- Installing and configuring it is hard for beginners to get started with2016-09-23
- Query planner unpredictably switches to terrible plans, bringing down the site after unrelated writes2016-08-01
- Behaves so irrationally users cannot infer its rules from behavior2016-06-22
- Invalid GROUP BY queries silently return garbage instead of raising an error2016-02-03
- Silently truncates data and inserts zero values instead of erroring, causing unsafe and counter-intuitive results2016-01-18
- GRANT silently creates users and sets passwords, which is counterintuitive2016-01-07
- Reading the write log requires fragile hacks that break between versions2015-11-13
- Easy to write simple queries with abysmal performance, and unsafe defaults2015-02-09
- The MySQL command line client is much harder to use than psql2014-02-03
- Backup of one schema doesn't restore reliably onto later versions2013-11-13
- Can't see what locks are happening; enabling deadlock logging requires a server restart2013-10-02
- Simple date manipulation for reports was cumbersome and frustrating in MySQL2013-04-09