I inherited a system where, among other things, the entire response body from a payment gateway callback is saved into a text field using utf8 character set, despite the fact that most of the supported payment gateways send data in iso-8859-x (and indicate the used charset inside the body itself, how's that for a chicken-and-egg problem). Of course when the data gets truncated due to not actually being utf8, nobody notices. Fun times.
[1]: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mo...
Yes, yes it is - it burned me so badly (catastrophic, unrecoverable production data loss) in the early days of my career (~15 years ago as a junior level dev in a senior level role) that it has forever colored my opinion of MySQL - I will really never trust it again.
Long live PostgreSQL!
EDIT: Though I am curious why MySQL doesn't throw an error when you try to store more than 64KB in BLOB?
> time_t is now 64 bits on all platforms.
Linux[2]:
> The vast majority of 64-bit hosts use 64-bit time_t. This includes GNU/Linux, the BSDs, HP-UX, Microsoft Windows, Solaris, and probably others. There are one or two holdouts (Tru64 comes to mind) but they're a clear minority.
This is little help for older, already deployed systems, of course.
[1]: https://www.openbsd.org/55.html
[2]: https://mm.icann.org/pipermail/tz/2004-June/012483.html