Ошибка MySQL 2006: сервер mysql ушел
Я запускаю сервер в своем офисе для обработки некоторых файлов и отправки результатов на удаленный сервер MySQL.
Обработка файлов занимает некоторое время, и процесс замирает на полпути со следующей ошибкой:
2006, MySQL server has gone away
Я слышал о настройке MySQL, wait_timeout , но мне нужно изменить это на сервере в моем офисе или удаленном сервере MySQL?
Возможно, будет легче проверить, подключится ли соединение и при необходимости восстановит его.
См. PHP: mysqli_ping для получения информации об этом.
Я встречал это несколько раз, и обычно я нашел ответ как очень невысокую настройку по умолчанию max_allowed_packet
. /etc/my.cnf
его в /etc/my.cnf
(под [mysqld]
) до 8 или 16M обычно исправляет его.
[mysqld] max_allowed_packet=16M
Примечание. Это может быть установлено на вашем сервере по мере его запуска.
Используйте set global max_allowed_packet=104857600
. Это устанавливает значение 100 МБ.
У меня была та же проблема, но изменение max_allowed_packet
в файле my.ini/my.cnf
в [mysqld]
сделало трюк.
добавить строку
max_allowed_packet = 500M
теперь restart the MySQL service
только вы закончите.
Я использовал следующую команду в командной строке MySQL для восстановления базы данных MySQL размером более 7 ГБ, и она работает.
set global max_allowed_packet=268435456;
В MAMP (non-pro version) я добавил
--max_allowed_packet=268435456
к ...\MAMP\bin\startMysql.sh
Кредиты и более подробная информация здесь
Ошибка: 2006 ( CR_SERVER_GONE_ERROR )
Сообщение: сервер MySQL ушел
Как правило, вы можете повторно подключиться, а затем снова выполнить запрос, чтобы решить эту проблему – попробуйте 3-4 раза, прежде чем полностью отказаться.
Я предполагаю, что вы используете PDO. Если это так, вы поймаете исключение PDO, увеличьте счетчик, а затем повторите попытку, если счетчик находится под порогом.
Если у вас есть запрос, вызывающий таймаут, вы можете установить эту переменную, выполнив:
SET @@GLOBAL.wait_timeout=300; SET @@LOCAL.wait_timeout=300; -- OR current session only
Где 300 – это количество секунд, которое, по вашему мнению, максимальное время, которое может потребоваться запросу.
Дополнительная информация о том, как бороться с проблемами подключения Mysql.
EDIT: Два других параметра, которые вы, возможно, захотите использовать, – net_write_timeout
и net_read_timeout
.
Эта ошибка возникает из-за истечения срока ожидания wait_timeout.
Просто зайдите на сервер mysql, проверьте его wait_timeout:
mysql> SHOW VARIABLES LIKE ‘wait_timeout’
mysql> set global wait_timeout = 600 # 10 минут или максимальное время ожидания, которое вам нужно
http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html
Я получал такую же ошибку на моем сервере DigitalOcean Ubuntu.
Я попытался изменить параметры max_allowed_packet и wait_timeout, но ни один из них не исправил его.
Оказывается, мой сервер вышел из ОЗУ. Я добавил файл подкачки 1GB и исправил свою проблему.
Проверьте свою память free -h
чтобы узнать, вызывает ли это это.
В Windows эти парни, использующие xampp, должны использовать этот путь xampp / mysql / bin / my.ini и изменить max_allowed_packet (в разделе [mysqld]) на ваш размер выбора. например
max_allowed_packet=8M
Опять же на php.ini (xampp / php / php.ini) измените upload_max_filesize размер выбора. например
upload_max_filesize=8M
Дал мне головную боль на некоторое время, пока я не узнал об этом. Надеюсь, поможет.
Для Vagrant Box убедитесь, что вы выделяете достаточное количество памяти в поле
config.vm.provider "virtualbox" do |vb| vb.memory = "4096" end
В маловероятном сценарии у вас есть межсетевой экран между клиентом и сервером, который заставляет TCP-сброс в соединение.
У меня была эта проблема, и я обнаружил, что наш корпоративный F5-брандмауэр был настроен на прекращение неактивных сессий, которые простаивают более 5 минут.
Еще раз, это маловероятный сценарий.
Если вы используете 64Bit WAMPSERVER, выполните поиск нескольких вхождений max_allowed_packet, потому что WAMP использует значение, установленное в [wampmysqld64], а не значение, установленное в [mysqldump], которое для меня было проблемой, я обновлял неправильный. Установите это как-то вроде max_allowed_packet = 64M.
Надеюсь, это поможет другим пользователям Wampserver.
раскомментируйте ligne ниже в my.ini/my.cnf
, это разделит ваш большой файл на меньшую часть
# binary logging format - mixed recommended # binlog_format=mixed
К
# binary logging format - mixed recommended binlog_format=mixed
В моем случае это было низкое значение переменной open_files_limit
, которая блокировала доступ mysqld к файлам данных.
Я проверил его с помощью:
mysql> SHOW VARIABLES LIKE 'open%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 1185 | +------------------+-------+ 1 row in set (0.00 sec)
После того как я изменил переменную на большую ценность, наш сервер снова был жив:
[mysqld] open_files_limit = 100000
Для меня это была проблема с ОЗУ.
У меня была такая же проблема даже на сервере с 12 ядрами процессора и 32 ГБ оперативной памяти. Я исследовал больше и пытался освободить оперативную память. Вот команда, которую я использовал на Ubuntu 14.04 для освобождения оперативной памяти:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
И все это исправлено. Я устанавливал его под cron для запуска каждый час.
crontab -e 0 * * * * bash /root/ram.sh;
И вы можете использовать эту команду, чтобы проверить, сколько свободной свободной памяти доступно:
free -h
И вы получите что-то вроде этого:
total used free shared buffers cached Mem: 31G 12G 18G 59M 1.9G 973M -/+ buffers/cache: 9.9G 21G Swap: 8.0G 368M 7.6G
Я нашел решение «# 2006 – сервер MySQL ушел» этой ошибки. Решение – вам просто нужно проверить два файла
- config.inc.php
- config.sample.inc.php
Путь этих файлов в windowsх
C:\wamp64\apps\phpmyadmin4.6.4
В этих двух файлах значение этого:
$cfg['Servers'][$i]['host']must be 'localhost' .
В моем случае это было:
$cfg['Servers'][$i]['host'] = '127.0.0.1';
измените его на:
"$cfg['Servers'][$i]['host']" = 'localhost';
Удостоверьтесь в обоих:
- config.inc.php
- config.sample.inc.php файлы должны быть «localhost».
И последний набор:
$cfg['Servers'][$i]['AllowNoPassword'] = true;
Затем перезапустите Wampserver.
Чтобы изменить имя пользователя и пароль phpmyadmin
Вы можете напрямую изменить имя пользователя и пароль phpmyadmin через файл config.inc.php
Эти две линии
$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '';
Здесь вы можете указать новое имя пользователя и пароль. После изменений сохраните файл и перезапустите WAMP-сервер.
На моем рабочем столе Ubuntu у меня появилось сообщение Error 2006 в другом приложении для клиентов MySQL. Оказалось, что моя версия драйвера JDBC слишком стар.
Это может быть проблемой вашего размера файла .sql.
Если вы используете xampp. Перейдите на панель управления xampp -> Нажмите MySql config -> Откройте my.ini.
Увеличьте размер пакета.
max_allowed_packet = 2M -> 10M
Обычно это указывает на проблемы подключения к серверу MySQL или тайм-ауты. Обычно можно решить, изменив wait_timeout и max_allowed_packet в my.cnf или аналогичном.
Я бы предложил следующие значения:
wait_timeout = 28800
max_allowed_packet = 8M
Для пользователей, использующих XAMPP, в C: \ xampp \ mysql \ bin \ my.ini имеется 2 параметра max_allowed_packet.
Всегда полезно проверять журналы сервера Mysql, почему он ушел.
Это скажет вам.
Если вы знаете, что некоторое время находитесь в автономном режиме, вы можете закрыть свое соединение, выполнить обработку, повторно подключить и написать свои отчеты.