Выполнение Создает «MySQL сервер ушел» Ошибка - PullRequest
1 голос
/ 27 августа 2010

Я использую PHP-скрипт, который предназначен для непрерывного выполнения в течение длительного времени (одноразовый скрипт отображения) и вставки данных в базу данных MySQL. Сценарий работает нормально, однако, в конце концов (через минуту или две) он получает ошибку:

MySQL server has gone away

Я изменил настройки ini как для тайм-аута подключения mysql, так и для тайм-аута выполнения сценария php, но ни один из них не изменил результат.

В прошлом я создавал ОЧЕНЬ похожий скрипт, который долгое время работал на одном и том же сервере, но никогда не сталкивался с этой ошибкой.

Я благодарю вас за потраченное время, надеюсь, ваша помощь поможет мне решить эту проблему вместе с любым другим разочарованным сценаристом, встречающим этот пост в будущем.

Ответы [ 3 ]

1 голос
/ 27 августа 2010

Есть много причин для этого: время ожидания, большой размер пакета и т. Д.

Пожалуйста, отметьте this

0 голосов
/ 07 октября 2010

проверьте max_allowed_packet в настройках сервера mysql.Клиент не может отправлять пакеты размером больше этого, или сервер MySQL закроет соединение.

Это относится только к вставкам данных, когда строка запроса становится очень длинной.Это не влияет на SELECT, поскольку сервер автоматически увеличит отправляющий пакет.

Хороший размер - это размер ваших данных, умноженный на два.Умножение необходимо, так как часто перед отправкой экранируются данные, а заголовок и возможный нижний колонтитул добавляются в SQL-запрос.

Использование max_allowed_packet будет для управления использованием памяти сервера и ограничения DoS-атак.

0 голосов
/ 27 августа 2010

Вы перезапустили mysqld после изменения конфигурации?Достаточно ли у вас памяти, чтобы она не убивалась OOM killer?

ОБНОВЛЕНИЕ: вот решение, вам нужно установить «время ожидания» http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...