This problem is because table log_visitor_info
contains extra rows of visitors that doesn't exist in log_visitor
table, as explained in @creuzerm's comment;
if you run these queries you must have the same result
SELECT MAX(`visitor_id`) FROM `log_visitor`;
SELECT MAX(`visitor_id`) FROM `log_visitor_info`;
to solve this problem you need to delete these extra invalid rows with the following query
DELETE FROM `log_visitor_info` WHERE `visitor_id` > ( SELECT MAX(`visitor_id`) FROM `log_visitor` );
for consistency run this too
DELETE FROM `log_visitor_online` WHERE `visitor_id` > ( SELECT MAX(`visitor_id`) FROM `log_visitor` );