2006 mysql server has gone away windows

Ошибка 2006 или server has gone away

Эта статья может быть полезна тем, кто импортирует базы данных больших размеров на Denwer (либо на свой выделенный сервер). Допустим, размер Вашей базы 50 МБ. Просто через вставку запроса в phpMyAdmin в разделе «SQL» ничего не выйдет — браузер просто повиснет. Поэтому единственный выход — использовать импорт SQL-файла. Но тут Вас будет поджидать ошибка #2006 или server has gone away. Вот о решении этой проблемы я и расскажу в этой небольшой статье.

Самое первое, что Вы должны сделать — это настроить PHP для загрузки файлов больших размеров. Без этого по умолчанию Вы вообще не сможете загружать файлы размером, например, 50 МБ.

Дальше необходимо зайти в настройку MySQL (на Denwer это «usr\local\mysql-5.5\my.ini«) и там поменять значение параметра «max_allowed_packet» на, например, 100M, что соответствует 100 МБ:

После всего этого перезапустите MySQL (либо Denwer), и больше ошибки 2006 или server has gone away возникать не будет. Если, конечно, Вы не захотите импортировать базу данных размером 150 МБ, тогда придётся снова увеличивать необходимые параметры в настройках PHP и MySQL.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 4 ):

    Очень познавательная статья! Рекомендую новичкам.

    На денвере можно иvпортить через Mysql.exe, в командной строке

    Михаил, спасибо! Помогло 🙂

    Михаил если 3 гб? там все же выводится такая ошибка (( указал =3072М и перезагрузил денвер

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

    Ошибка MySQL 2006: сервер mysql ушел

    Я запускаю сервер в своем офисе, чтобы обработать некоторые файлы и сообщить о результатах удаленному серверу MySQL.

    обработка файлов занимает некоторое время, и процесс умирает на полпути через следующей ошибки:

    Я слышал о настройке MySQL,wait_timeout, но мне нужно изменить это на сервере в моем офисе или на удаленном сервере MySQL?

    23 ответов

    Это может быть проще проверить, если соединение и восстановить его, если это необходимо.

    посмотреть PHP: mysqli_ping для информации об этом.

    я сталкивался с этим несколько раз, и я обычно находил ответ очень низким значением по умолчанию max_allowed_packet . Поднимая его в /etc/my.cnf (при [mysqld] ) до 8 или 16M обычно исправляет его.

    Примечание: это может быть установлено на вашем сервере, как он работает.

    использовать set global max_allowed_packet=104857600 . Это устанавливает его в 100MB.

    у меня была та же проблема, но изменение max_allowed_packet на под [mysqld] сделал трюк.

    теперь restart the MySQL service как только вы закончите.

    я использовал следующую команду в командной строке MySQL для восстановления базы данных MySQL размером более 7 ГБ, и она работает.

    в MAMP (не pro версия) я добавил

    кредитов и более подробная информация здесь

    как правило, вы можете повторить попытку подключения, а затем снова выполнить запрос, чтобы решить эту проблему — попробуйте 3-4 раза, прежде чем полностью отказаться.

    Читайте также:  Windows media players codec pack

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

    Если у вас есть запрос, который вызывает тайм-аут вы можете установить эту переменную, выполнив:

    где 300-это количество секунд, которое вы считаете максимальным временем запроса.

    EDIT: две другие настройки, которые вы также можете использовать, это net_write_timeout и net_read_timeout .

    эта ошибка возникает из-за истечения wait_timeout .

    просто перейдите на сервер mysql, проверьте его wait_timeout:

    mysql> показать переменные, такие как’wait_timeout’

    mysql> установить глобальное wait_timeout = 600 # 10 минут или максимальное время ожидания вам нужен

    Я получал эту же ошибку на моем сервере DigitalOcean Ubuntu.

    Я попытался изменить настройки max_allowed_packet и wait_timeout, но ни один из них не исправил его.

    оказывается, что у моего сервера не было ОЗУ. Я добавил 1GB файл подкачки и это исправило мою проблему.

    проверьте свою память с помощью free -h чтобы увидеть, если это то, что вызывает это.

    в windows эти ребята, использующие xampp, должны использовать этот путь xampp/mysql/bin / my.ini и измените max_allowed_packet (в разделе[mysqld])на ваш размер выбора. е.г

    снова на php.Ини(программе XAMPP/PHP в/РНР.ini) измените размер выбора upload_max_filesize. е.г

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

    для Vagrant Box убедитесь, что вы выделили достаточно памяти для box

    В моем случае это было низкое значение open_files_limit переменная, которая заблокировала доступ mysqld к файлам данных.

    Я проверил его с помощью :

    после того, как я изменил переменную большое значение, наш сервер снова жив :

    это была проблема с ОЗУ для меня.

    у меня была такая же проблема даже на сервере с 12 ядрами процессора и 32 ГБ оперативной памяти. Я исследовал больше и попытался освободить RAM. Вот команда, которую я использовал на Ubuntu 14.04, чтобы освободить ОЗУ:

    и это все исправило. Я установил его под cron, чтобы работать каждый час.

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

    и, вы получите что-то вроде это:

    маловероятный сценарий-у вас есть брандмауэр между клиентом и сервером, который заставляет сброс TCP в соединение.

    У меня была эта проблема, и я обнаружил, что наш корпоративный брандмауэр F5 был настроен на прекращение неактивных сеансов, которые простаивают более 5 минут.

    еще раз, это маловероятный сценарий.

    Если вы используете 64-битный WAMPSERVER, выполните поиск нескольких вхождений max_allowed_packet поскольку WAMP использует значение, установленное под [wampmysqld64], а не значение, установленное под [mysqldump], что для меня было проблемой, я обновлял неправильный. Установите для этого значение max_allowed_packet = 64M.

    надеюсь, это поможет другим пользователям Wampserver.

    раскомментируйте ligne ниже в вашем my.ini/my.cnf , это разделит ваш большой файл на меньшую часть

    Я нашел решение для «#2006 — mysql server ушел » эта ошибка. Решение заключается в том, что вам нужно проверить два файла

    1. конфигурации.Инк.в PHP
    2. конфигурации.образец.Инк.в PHP

    путь этих файлов в windows —

    в этих двух файлах значение этого:

    в моем случае это было:

    убедитесь в оба:

    1. конфигурации.Инк.в PHP
    2. конфигурации.образец.Инк.php-файлы должны быть «localhost».

    и последний сет:

    затем перезапустите Wampserver.

    изменить имя пользователя и пароль phpmyadmin

    вы можете напрямую изменить имя пользователя и пароль phpmyadmin через config.Инк.файл php

    вы можете дать новое имя пользователя и пароль:. После изменений сохраните файл и перезапустите WAMP server.

    Это обычно указывает сервер MySQL проблем с подключением или тайм-ауты. Обычно может быть решена путем изменения wait_timeout и max_allowed_packet на мой.cnf или аналогичные.

    Я бы предложил следующие значения:

    wait_timeout = 28800

    max_allowed_packet = 8М

    Я получил сообщение об ошибке 2006 в другом программном обеспечении клиентов MySQL на моем рабочем столе Ubuntu. Оказалось, что моя версия драйвера JDBC была слишком старой.

    это может быть вашей проблемой .размер файла sql.

    Если вы используете xampp. Перейдите к панели управления xampp — > нажмите MySQL config — > откройте Мой.ini.

    Читайте также:  Денис курец администрирование windows server 2016

    увеличить размер пакета.

    для пользователей, использующих XAMPP, есть 2 max_allowed_packet параметры в C:\xampp\mysql\bin\my.ini.

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

    эта ошибка возникает в основном по двум причинам.

    1. у вас слишком низкая оперативная память.
    2. соединение с базой данных закрывается при попытке подключения.

    вы можете попробовать этот код ниже.

    он смягчает ошибку независимо от причины, стоящей за ней, особенно по второй причине.

    Если это вызвано низкой ОЗУ, вам либо нужно повысить эффективность подключения к базе данных из кода, из конфигурации базы данных, или просто поднять баран.

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

    ERROR 2006 (HY000): MySQL server has gone away

    I get this error when I try to source a large SQL file (a big INSERT query).

    Nothing in the table is updated. I’ve tried deleting and undeleting the table/database, as well as restarting MySQL. None of these things resolve the problem.

    Here is my max-packet size:

    Here is the file size:

    When I try the other method.

    21 Answers 21

    Adding this line into my.cnf file solves my problem.

    This is useful when the columns have large values, which cause the issues, you can find the explanation here.

    On Windows this file is located at: «C:\ProgramData\MySQL\MySQL Server 5.6»

    On Linux (Ubuntu): /etc/mysql

    You can increase Max Allowed Packet

    The global update and the my.cnf settings didn’t work for me for some reason. Passing the max_allowed_packet value directly to the client worked here:

    In general the error:

    Error: 2006 ( CR_SERVER_GONE_ERROR ) — MySQL server has gone away

    means that the client couldn’t send a question to the server.

    mysql import

    In your specific case while importing the database file via mysql , this most likely mean that some of the queries in the SQL file are too large to import and they couldn’t be executed on the server, therefore client fails on the first occurred error.

    So you’ve the following possibilities:

    Add force option ( -f ) for mysql to proceed and execute rest of the queries.

    This is useful if the database has some large queries related to cache which aren’t relevant anyway.

    Increase max_allowed_packet and wait_timeout in your server config (e.g.

    Dump the database using —skip-extended-insert option to break down the large queries. Then import it again.

    Try applying —max-allowed-packet option for mysql .

    Common reasons

    In general this error could mean several things, such as:

    a query to the server is incorrect or too large,

    Solution: Increase max_allowed_packet variable.

    Make sure the variable is under [mysqld] section, not [mysql] .

    Don’t afraid to use large numbers for testing (like 1G ).

    Don’t forget to restart the MySQL/MariaDB server.

    Double check the value was set properly by:

    You got a timeout from the TCP/IP connection on the client side.

    Solution: Increase wait_timeout variable.

    You tried to run a query after the connection to the server has been closed.

    Solution: A logic error in the application should be corrected.

    Host name lookups failed (e.g. DNS server issue), or server has been started with —skip-networking option.

    Another possibility is that your firewall blocks the MySQL port (e.g. 3306 by default).

    The running thread has been killed, so retry again.

    You have encountered a bug where the server died while executing the query.

    A client running on a different host does not have the necessary privileges to connect.

    Debugging

    Here are few expert-level debug ideas:

    Check the logs, e.g.

    Test your connection via mysql , telnet or ping functions (e.g. mysql_ping in PHP).

    Use tcpdump to sniff the MySQL communication (won’t work for socket connection), e.g.:

    Читайте также:  За windows 10 нужно будет платить

    On Linux, use strace . On BSD/Mac use dtrace / dtruss , e.g.

    Learn more how to debug MySQL server or client at: 26.5 Debugging and Porting MySQL.

    For reference, check the source code in sql-common/client.c file responsible for throwing the CR_SERVER_GONE_ERROR error for the client command.

    I solved the error ERROR 2006 (HY000) at line 97: MySQL server has gone away and successfully migrated a >5GB sql file by performing these two steps in order:

    Created /etc/my.cnf as others have recommended, with the following contents:

    Appending the flags —force —wait —reconnect to the command (i.e. mysql -u root -p -h localhost my_db ).

    Important Note: It was necessary to perform both steps, because if I didn’t bother making the changes to /etc/my.cnf file as well as appending those flags, some of the tables were missing after the import.

    System used: OSX El Capitan 10.11.5; mysql Ver 14.14 Distrib 5.5.51 for osx10.8 (i386)

    Just in case, to check variables you can use

    This will display the current variables, in this case max_allowed_packet, and as someone said in another answer you can set it temporarily with

    In my case the cnf file was not taken into account and I don’t know why, so the SET GLOBAL code really helped.

    You can also log into the database as root (or SUPER privilege) and do

    doesn’t require a MySQL restart as well. Note that you should fix your my.cnf file as outlined in other solutions:

    And confirm the change after you’ve restarted MySQL:

    You can use the command-line as well, but that may require updating the start/stop scripts which may not survive system updates and patches.

    As requested, I’m adding my own answer here. Glad to see it works!

    The solution is increasing the values given the wait_timeout and the connect_timeout parameters in your options file, under the [mysqld] tag.

    I had to recover a 400MB mysql backup and this worked for me (the values I’ve used below are a bit exaggerated, but you get the point):

    I had the same problem but changeing max_allowed_packet in the my.ini/my.cnf file under [mysqld] made the trick.

    now restart the MySQL service once you are done.

    A couple things could be happening here;

    • Your INSERT is running long, and client is disconnecting. When it reconnects it’s not selecting a database, hence the error. One option here is to run your batch file from the command line, and select the database in the arguments, like so;

    $ mysql db_name php or some other language. After each long — running statement, you can close and re-open the connection, ensuring that you’re connected at the start of each query.

    If you are on Mac and installed mysql through brew like me, the following worked.

    1. cp $(brew —prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf

    add max_allowed_packet=1073741824 to /usr/local/etc/my.cnf

    I encountered this error when I use Mysql Cluster, I do not know this question is from a cluster usage or not. As the error is exactly the same, so give my solution here. Getting this error because the data nodes suddenly crash. But when the nodes crash, you can still get the correct result using cmd:

    And the mysqld also works correctly.So at first, I can not understand what is wrong. And about 5 mins later, ndb_mgm result shows no data node working. Then I realize the problem. So, try to restart all the data nodes, then the mysql server is back and everything is OK.

    But one thing is weird to me, after I lost mysql server for some queries, when I use cmd like show tables , I can still get the return info like 33 rows in set (5.57 sec) , but no table info is displayed.

    Оцените статью