2012-05-12 2 views
130

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

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

ответ

242

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

Для меня это было под Edit → Preferences → SQL Editor → подключение DBMS чтения тайм-аут (в секундах): 600

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

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

+1

Возможно ли увеличить этот предел более 99,999 секунд? В поле «Время ожидания подключения к СУБД» принимается только до 5 цифр, а установка поля в 0 эквивалентна параметру по умолчанию (600 секунд). (Windows 7 64-bit Ultimate, MySQL Workbench 5.2.47 CE) –

+1

Следуя http://stackoverflow.com/q/16877574/395857, эта проблема теперь решена (http://bugs.mysql.com/bug.php ? id = 69395) –

+3

снимите отметку с ограничениями строк в Edit → Preferences → SQL Queries – Jon

28

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

Для справки см. here и here.

+1

Это правильно, но ответ с большинством опросов помог мне на самом деле –

+4

Как мне предоставить этот параметр в командной строке? Когда я пытаюсь подключиться к БД: mysql -u root -p -net_read_timeout = 60 или когда я пытаюсь запустить службу? sudo service mysql start? В обоих местах дается ошибка: неизвестная переменная 'net_read_timeout' –

8

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

+0

Это помогает мне. «interactive_timeout» в my.cnf был установлен в 100, это слишком коротко. после того, как я изменил его на 3600 с (или любое значение, достаточно большое для вас), проблема решена. Thx – CobraBJ

7

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

Issue следующей команды из вашей оболочки:

sudo mysql_upgrade -u root -p 
+0

Ошибка не появилась до тех пор, пока MySQL Workbench 6.1.4 (и только через некоторое время) не произойдёт и не будет 6.1.6 (хотя и только после нескольких применений), поэтому я не уверен, что восстановление нескольких серверов является исправлением для проблемы, которая появилась только в одном графическом интерфейсе совсем недавно. – dhinged

+0

Это исправило мою проблему. Я только что использовал Ansible для настройки базы данных по существующей, и все пошло не так. Запуск этой команды восстановил все до рабочего порядка. – Jubz

14

Если запрос содержит данные большие двоичные объекты, эта проблема может быть решена применением my.ini изменений as proposed in this answer:

[mysqld] 
max_allowed_packet=16M 

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

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

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

+0

Это была моя проблема. Я импортировал резервную копию базы данных из файла, и MySQL Workbench сообщал об ошибке 2013 года, а затем «Операция завершилась неудачно с помощью exitcode 1». Оказывается, резервная копия имела большие столбцы blob, превышающие размер MySQL max_allowed_packet по умолчанию, равный 4M. Это усилило это. (MySQL 5.6 и Workbench 6.2.3). Благодаря! – zAlbee

+0

Это было исправление для меня тоже. Хотя я установил его на 256 М для Windows-машины. – smoore4

+0

Имел 16M, получил эту ошибку с файлом импорта несколько раз, изменен на 32M, и затем он работал. – hakre

3

Постарайся, пожалуйста, чтобы снять лимит строк в меню Правка → Настройки → SQL запросы

, потому что вы должны установить «interactive_timeout» и свойства «WAIT_TIMEOUT» в файле конфигурации MySQL для значений вам нужно.

3

Я знаю, что его старый, но на макинтош

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

Спасибо! Это работало. Но обновляет MySQLdb Настроить уже стал:

max_allowed_packet

net_write_timeout

net_read_timeout

mysql doc

12

Добавьте следующее в/и т.д./кнф файл MySQL /:

innodb_buffer_pool_size = 64M 

пример:

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

Внимание: Ниже не будет работать, если вы подаете его в удаленном соединении:

SET @@global.net_read_timeout=360; 
3

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

В моем 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

4

Change "время зачитано" время в Edit-> Настройки-> SQL editor-> MySQL сессии

-1

проверки о

OOM on /var/log/messages , 
modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ; 

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

-1

Это обычно означает, что у вас есть «несовместимости с текущим версии MySQL Server ", см. mysql_upgrade. Я столкнулся с этой проблемой и просто должен был запустить:

mysql_upgrade --password В документации указывается, что «mysql_upgrade должен выполняться каждый раз при обновлении MySQL».

2

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

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

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

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

7

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

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

For more detail read >>

Причина 2:

SET GLOBAL interactive_timeout=60; 

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

Причина 3:

SET GLOBAL connect_timeout=60; 
1

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

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

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

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

1

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

Если эта проблема возникла, когда innodb_buffer_pool_size был установлен слишком близко к физической памяти без конфигурации swap. MySQL recommends for a database specific server setting innodb_buffer_pool_size at a max of around 80% of physical memory, я установил его около 90%, ядро ​​убило процесс mysql. Перемещенный innodb_buffer_pool_size возвращается примерно до 80%, и это устраняет проблему.

1

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

0

Перейти к:

Edit -> Preferences -> Редактор SQL

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

0

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

0

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

0

Проверьте, действительно ли указаны индексы.

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

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

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

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

Смежные вопросы