Pre-5.7, your query was selecting arbitrary values for date/country/region/etc from those for each visitor_id/visitor_ip, which is presumably not what you wanted. Starting with 5.7, you need to be explicit about what values you want to return. You can just be explicit:
SELECT visitor_id, MAX(visitor_date), MAX(visitor_country), MAX(visitor_region), MAX(visitor_city), MAX(visitor_postcode), MAX(visitor_latitude), MAX(visitor_ip)
FROM visitors
WHERE visitor_country =: visitor_country
GROUP BY visitor_id, visitor_ip
ORDER BY MAX(visitor_date) ASC
Or you can revert to the pre-5.7 settings (even if you can't change the global server settings) by doing
SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';
after connecting to the database. Though if you are using auto-reconnect, you may want to do it before each problematic query.
SELECT visitor_id, visitor_date, visitor_country, visitor_region, visitor_city, visitor_postcode, visitor_latitude, COUNT(visitor_ip) FROM visitors WHERE visitor_country =: visitor_country GROUP BY visitor_id, visitor_ip ORDER BY visitor_date ASC
– kwartz Dec 04 '17 at 20:20