У меня была такая же проблема, и это было абсолютно безумно. Вот что говорят документы на веб-сайте MySQL (выделено мое)
Должен ли драйвер попытаться восстановить устаревшие и / или разорванные соединения? Если этот параметр включен, драйвер будет выдавать исключение для запросов, отправленных по устаревшему или мертвому соединению, которые относятся к текущей транзакции, но будет пытаться повторно подключиться до следующего запроса, выполненного для соединения в новой транзакции . Использование этой функции не рекомендуется, поскольку она имеет побочные эффекты, связанные с состоянием сеанса и согласованностью данных, когда приложения не обрабатывают SQLExceptions должным образом, и предназначена только для случаев, когда вы не можете настроить приложение для обработки SQLExceception, возникающих в результате сбоя и устаревшие соединения правильно. Альтернативно, исследуйте установку серверной переменной MySQL "wait_timeout" к некоторому высокому значению вместо значения по умолчанию 8 часов.
По моему опыту, не похоже, чтобы работала функция "переподключиться по следующему запросу", но я использовал MySQL 4.0, что могло быть причиной этого.
В итоге я написал мини-фреймворк, который перехватывает исключения, проверяет эту конкретную ошибку и пытается повторно подключиться и, если возможно, повторить запрос.
ETA : Эта ссылка предоставляет немного больше информации и указывает, что autoReconnect в любом случае, вероятно, будет удален в будущем.