it-swarm.com.ru

Код ошибки: 2013. Потеря соединения с сервером MySQL во время запроса

Я получил Код ошибки: 2013. Потерянное соединение с сервером MySQL во время запроса Ошибка, когда я пытался добавить индекс в таблицу, используя MySQL Workbench. Я также заметил, что он появляется всякий раз, когда я запускаю длинный запрос. 

Можно ли увеличить значение тайм-аута?

178
user836026

Новые версии MySQL WorkBench имеют возможность изменять определенные таймауты.

Для меня это было под Редактировать → Настройки → Редактор SQL → Время ожидания соединения с СУБД (в секундах): 600

Изменено значение до 6000.

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

342
eric william nord

Запустите сервер БД с параметром командной строки net_read_timeout/wait_timeout и подходящим значением (в секундах), например: --net_read_timeout=100.

Для справки смотрите здесь и здесь .

28
Yahia

Если в вашем запросе есть данные BLOB-объектов, эту проблему можно исправить, применив my.ini change как предлагается в этом ответе :

[mysqld]
max_allowed_packet=16M

По умолчанию это будет 1M (максимально допустимое значение - 1024M). Если предоставленное значение не кратно 1024K, оно будет автоматически округлено до ближайшего кратного 1024K.

В то время как упомянутый поток связан с ошибкой MySQL 2006, установка max_allowed_packet от 1M до 16M did исправила ошибку 2013, которая появилась у меня при выполнении длинного запроса.

Для пользователей WAMP: вы найдете флаг в разделе [wampmysqld].

16
Harti

Добавьте следующее в файл/etc/mysql/cnf:

innodb_buffer_pool_size = 64M

пример:

key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
innodb_buffer_pool_size = 64M
14
MysqlMan
SET @@local.net_read_timeout=360;

Предупреждение: следующее не будет работать, когда вы применяете его в удаленном соединении:

SET @@global.net_read_timeout=360;
10
user1313024

Есть три вероятных причины для этого сообщения об ошибке

  1. Обычно это указывает на проблему с сетевым подключением, и вы должны проверить состояние вашей сети, если эта ошибка возникает часто
  2. Иногда форма «во время запроса» возникает, когда миллионы строк отправляются как часть одного или нескольких запросов.
  3. В более редких случаях это может произойти, когда клиент пытается установить исходное соединение с сервером.

Для более подробной информации читать >>

Причина 2: 

SET GLOBAL interactive_timeout=60;

от значения по умолчанию от 30 секунд до 60 секунд или дольше

Причина 3:

SET GLOBAL connect_timeout=60;
9
Nanhe Kumar

Вы должны установить свойства 'interactive_timeout' и 'wait_timeout' в файле конфигурации mysql на нужные вам значения.

8
Maksym Polshcha

Спасибо! Это сработало . Но с обновлениями mysqldb конфигурация стала:

max_allowed_packet

net_write_timeout

net_read_timeout

MySQL док

8
user2286136

Просто выполните обновление MySQL, которое перестроит механизм innoDB вместе с перестроением многих таблиц, необходимых для правильного функционирования MySQL, таких как performance_schema, information_schema и т.д.

Введите следующую команду из вашей командной консоли:

Sudo mysql_upgrade -u root -p
7
Shoaib Khan

Я знаю его старый, но на Mac 

1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.
4
Aamir Mahmood

Измените время ожидания чтения в Edit-> Preferences-> SQL editor-> MySQL session

4
user6234739

Попробуйте снять отметки с ограниченных строк в меню «Правка» → «Настройки» → «SQL-запросы». 

потому что вы должны установить свойства 'interactive_timeout' и 'wait_timeout' в файле конфигурации mysql на нужные вам значения.

3
user2586714

Если вы столкнулись с этой проблемой во время восстановления большого дампа-файла и можете исключить проблему, связанную с сетью (например, выполнением на локальном хосте), моё решение может быть полезным.

Мой mysqldump содержал по крайней мере одну INSERT, которая была слишком большой для mysql, чтобы вычислить. Вы можете просмотреть эту переменную, набрав show variables like "net_buffer_length"; внутри вашего mysql-cli . У вас есть три возможности:

  • увеличить net_buffer_length внутри mysql -> это потребует перезагрузки сервера
  • создать дамп с --skip-extended-insert, для каждой вставки используется одна строка -> хотя эти дампы намного приятнее читать, это не подходит для больших дампов> 1 ГБ, потому что это имеет тенденцию быть очень медленным
  • создать дамп с расширенными вставками (который используется по умолчанию), но ограничить длину net-buffer_length, например с --net-buffer_length NR_OF_BYTES где NR_OF_BYTES меньше, чем net_buffer_length сервера -> Я думаю, что это лучшее решение, хотя медленнее перезапуск сервера не требуется.

Я использовал следующую команду mysqldump: mysqldump --skip-comments --set-charset --default-character-set=utf8 --single-transaction --net-buffer_length 4096 DBX > dumpfile 

3
Matt V

Если все остальные решения здесь не сработают - проверьте системный журнал (/ var/log/syslog или аналогичный), чтобы увидеть, не хватает ли памяти вашего сервера во время запроса.

Возникла эта проблема, когда innodb_buffer_pool_size был установлен слишком близко к физической памяти без настроенного файла подкачки. MySQL рекомендует для сервера базы данных установить параметр innodb_buffer_pool_size на макс. Около 80% физической памяти , у меня он установлен на уровне около 90%, ядро ​​убивает процесс mysql. Перемещение innodb_buffer_pool_size обратно на 80%, и это решило проблему.

2
A_funs

У меня возникла такая же проблема при загрузке CSV-файла ...

Используя приведенную ниже команду, мне удается обойти эту проблему.

mysql -u <user> -p -D <DB name> < file.sql

Надеюсь, это поможет.

2
Vinod Amarathunga

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

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

Затем после создания таблицы я добавил ограничения внешнего ключа с помощью запроса ALTER TABLE.

Надеюсь, это кому-нибудь поможет.

1
Nimeshka Srimal

Это случилось со мной, потому что мой innodb_buffer_pool_size был установлен больше, чем размер RAM, доступный на сервере. Вещи были прерваны из-за этого, и это выдает эту ошибку. Исправление состоит в том, чтобы обновить my.cnf с правильной настройкой для innodb_buffer_pool_size.

1
Phyllis Sutherland

Если вы используете SQL Work Bench, вы можете попробовать использовать индексирование, добавив индекс в ваши таблицы, чтобы добавить индекс, щелкните по значку гаечного ключа (гаечного ключа) в таблице, он должен открыть настройки для таблицы ниже. щелкните представление индекса, введите имя индекса и установите тип индекса. В столбцах индекса выберите основной столбец в таблице.

Сделайте тот же шаг для других первичных ключей на других таблицах.

0
Matthew E

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

Я перепробовал все предложения в других ответах. Я уверен, что кое-что помогло, однако, что действительно заставило это работать для меня, было переключение на SequelPro от Workbench.

Я предполагаю, что это было какое-то соединение на стороне клиента, которое я не смог обнаружить в Workbench ........ Может быть, это поможет кому-то еще?

0
RN.

Перейдите в Workbench Edit → Preferences → SQL Editor → Время ожидания соединений СУБД: до 3000 . Ошибка больше не возникала.

0
Kairat Koibagarov

Оказывается, наше правило брандмауэра блокировало мое соединение с MYSQL. После того, как политика брандмауэра отменена, чтобы разрешить соединение, я смог успешно импортировать схему.

0
wuro

У меня была та же проблема - но для меня решением был пользователь БД со слишком строгими разрешениями .. Мне пришлось разрешить возможность Execute в таблице mysql. После того, как я позволил, у меня больше не было сбрасываемых соединений.

0
naabster

Сначала проверьте, чтобы indexes были на месте.

SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
0
Gayan Dasanayake

Идти к:

Правка -> Настройки -> Редактор SQL

Там вы можете увидеть три поля в группе «MySQL Session», где вы можете установить новые интервалы подключения (в секундах).

0
Max

Кажется, здесь нет ответа для тех, кто использует SSH для подключения к своей базе данных MySQL. Вам нужно проверить два места, а не 1, как предлагают другие ответы:

Редактировать Workbench → Настройки → Редактор SQL → СУБД

Редактировать Workbench → Настройки → SSH → Таймауты

Мои тайм-ауты SSH по умолчанию были установлены очень низкими и вызывали некоторые (но, очевидно, не все) мои проблемы тайм-аута. После, не забудьте перезапустить MySQL Workbench!

Наконец, возможно, стоит обратиться к администратору БД и попросить его увеличить свойства wait_timeout и interactive_timeout в самом mysql через my.conf + mysql restart или выполнить глобальный набор, если перезапуск mysql не является опцией.

Надеюсь это поможет!

0
ThatOneGuy