Подтвердить что ты не робот

Потерянное соединение с сервером MySQL во время запроса?

Возможный дубликат:
Потерянное соединение с сервером MySQL во время запроса

Я импортирую некоторые данные из большого csv в таблицу mysql. Я теряю соединение с сервером во время процесса импорта файла в таблицу.

Что происходит не так?

Код ошибки - 2013: Потерянное подключение к серверу mySql во время запроса.

Я запускаю эти запросы с устройства ubuntu удаленно на сервере Windows.

4b9b3361

Ответ 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().

Эта функция проверяет подключение к серверу вживую или нет. если он терпит неудачу, вы можете повторно подключиться и продолжить свой запрос.