Потерянное соединение с сервером MySQL во время запроса?
Возможный дубликат:
Потерянное соединение с сервером MySQL во время запроса
Я импортирую некоторые данные из большого csv в таблицу mysql. Я теряю соединение с сервером во время процесса импорта файла в таблицу.
Что происходит не так?
Код ошибки - 2013: Потерянное подключение к серверу mySql во время запроса.
Я запускаю эти запросы с устройства ubuntu удаленно на сервере Windows.
Ответы
Ответ 1
Самое легкое решение, которое я нашел для этой проблемы, - это понизить MySql от MySQL Workbench до MySQL версии 1.2.17. Я просмотрел некоторые Форумы MySQL, где было сказано, что время ожидания в MySQL Workbech было жестко закодировано до 600, а некоторые предлагаемые методы его изменения не сработали для меня. Если кто-то сталкивается с такой же проблемой с верстаком, вы тоже можете попробовать понизить.
Ответ 2
Попробуйте следующие 2 вещи...
1) Добавьте это в свой my.cnf / my.ini
в разделе [mysqld]
max_allowed_packet=32M
(вам может потребоваться установить это значение выше на основе существующей базы данных).
2) Если импорт по-прежнему не работает, попробуйте его так же...
mysql -u <user> --password=<password> <database name> <file_to_import
Ответ 3
Обычно это происходит, когда вы исчерпываете один ресурс для сеанса db, такой как память, и mysql закрывает соединение.
Можете ли вы разбить файл CSV на более мелкие и обработать их? или совершать каждые 100 строк? Идея состоит в том, что транзакция, в которой вы работаете, не должна пытаться вставить большой объем данных.
Я забыл добавить, эта ошибка связана с свойством конфигурации max_allowed_packet
, но я не могу запомнить детали того, что нужно изменить.
Ответ 4
1) вам может потребоваться увеличить таймаут в вашем соединении.
2) Вы можете получить дополнительную информацию о потерянных соединениях, запустив mysqld с помощью опции -log-warnings = 2.
Это регистрирует некоторые из отключенных ошибок в файле hostname.err
Вы можете использовать это для дальнейшего изучения
3), если вы пытаетесь отправить данные в столбцы BLOB, проверьте переменную server max_allowed_packet, которая имеет значение по умолчанию 1 МБ. Вам также может потребоваться увеличить максимальный размер пакета на стороне клиента. Дополнительная информация об установке размера пакета приведена в следующей ссылке: "" Слишком большой пакет".
4) вы можете проверить следующий URL ссылка
5) вы должны проверить, что доступное дисковое пространство больше, чем таблица, которую вы пытаетесь обновить ссылка
Ответ 5
Вам может понравиться прочитать это: http://dev.mysql.com/doc/refman/5.0/en/gone-away.html - это очень хорошо объясняет причины и исправления сценариев "потерянного соединения во время запроса".
В вашем случае это может быть из-за max разрешенного размера пакета, как указано Augusto. Или, если вы подтвердили, что это не так, возможно, это параметр время ожидания подключения, из-за которого клиент теряет соединение. Тем не менее, я не думаю, что последнее верно здесь, потому что это CSV файл и не содержит запросов.
Ответ 6
Я думаю, вы можете использовать mysql_ping().
Эта функция проверяет подключение к серверу вживую или нет. если он терпит неудачу, вы можете повторно подключиться и продолжить свой запрос.