ONLY_FULL_GROUP_BY will break your reports

MySQL used to allow selecting a column that is neither grouped nor aggregated, returning an arbitrary row’s value for it. 5.7 turns that off by default, and every report written against the old behaviour stops running.

-- allowed before, rejected now: which name?
SELECT customer_id, name, SUM(total)
  FROM orders GROUP BY customer_id;

-- say what you mean
SELECT customer_id, ANY_VALUE(name), SUM(total)
  FROM orders GROUP BY customer_id;

-- or group by it, which is usually what was intended
SELECT customer_id, name, SUM(total)
  FROM orders GROUP BY customer_id, name;

ANY_VALUE() is the escape hatch and it is an assertion: you are telling the optimiser the value is the same for every row in the group. When that is true — a customer name alongside a customer id — it is honest and cheap. When it is not, the old query was returning an arbitrary value and nobody had noticed, which is the more common case.