Search
Write a publication
Pull to refresh

Comments 8

Lost connection to MySQL server during query

Обычно ошибка выдается, если запрос превышает значение указанное в max_allowed_packet (значение по умолчанию 1 МБ), так что достаточно подправить конфиг mysql, тем более что в большинстве случаев этот параметр у хостера будет больше значения по умолчанию.
Всегда восстанавливайте дампы так:
mysql> use database;
mysql> source /tmp/dump.sql;

Из под мускульного рута.

Много граблей обойдете.
В данном случае не поможет, так как консольный mysql это такой же клиент, как и остальные. И если он отправит длинный insert не проходящий max_allowed_packet — то сервак его точно также «отошьёт» с ошибкой.
Проблема в том, что «Lost connection to MySQL server during query» не всегда связано с max_allowed_packet =)

Я наразвлекался с 80 гиговым дампом в своё время — его через cat | mysql восстановить вообще никак не получалось (лучшее, чего удалось добиться — это «Lost connection to MySQL server during query» через 36 часов работы/40 залитых гигов), а потом через source удалось залить его целиком за всего лишь 5 часов.
Менять дамп sed-ом/perl-ом такого размера, само собой, весьма накладно было.

Например, в дампе может быть строка, которая физически не успевает попасть через пайп (а он весьма медленный) в различные таймауты и угадывать на большом дампе, в какой таймаут ты не попал, накладно. Ну и банально читать файл с диска быстрее, чем читать STDIN. Всегда.
Ну я как бы и не говорил, что всегда проблема в max_allowed_packet. Но чаще всего, особенно у людей редко имеющих дело с дампами, и особенно при переносе на другой сервер.
Мне повезло. Мой дамп пока всего 200 мегабайт.
Sign up to leave a comment.

Articles