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