5.7 turned strict mode on, and old inserts started failing

The default sql_mode changed, and with it a decade of behaviour: inserting a string into a numeric column, a date of 0000-00-00, or more characters than the column holds now errors instead of warning and truncating.

-- 5.6: warning, stores 0
-- 5.7: ERROR 1366 Incorrect integer value
INSERT INTO orders (quantity) VALUES ('abc');

SELECT @@sql_mode;
-- ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
-- NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

This is correct and it will break an application that has been silently relying on coercion for years — usually in a code path nobody exercises often. The temptation is to restore the old mode in my.cnf and move on; the better path is to fix the writes, because the truncated data was always wrong and now you know where. NO_ZERO_DATE in particular breaks a great deal of older code that uses the zero date as a null.