MySQL Sever деп аталатын 2006 қатесі жойылды, сервер жұмыс істеп тұрғанына қарамастан қосылудан бас тартады. Қатенің пайда болуының үш ғана белгілі себебі бар. Бірінші себеп - сервердің шамадан тыс жүктелуі. Күту уақыты аяқталды. Екінші себеп - клиенттің тым ауырған пакетті жібергені. Үшіншіден, сервер толық іске қосылмаған. Әрі қарай, қатенің неліктен пайда болатынын және онымен қалай күресуге болатынын егжей-тегжейлі қарастырамыз.
Әдетте қате дерекқорға PHP, консоль клиенті арқылы қосылу әрекеті кезінде немесе PhpMyAdmin пайдалану кезінде пайда болады:

Әр жағдайды бөлек қарастырайық.
Мақаланың басында айтылғандай, мүмкін себептердің бірі күту уақыты болып табылады. Сервер шамадан тыс жүктелген және жүктемені көтере алмаған болуы мүмкін - барлық қосылымдарды өңдеу. Сервер сұрауларының аяқталуына қанша уақыт кететінін түсіну үшін кез келген консоль клиентін пайдалануға және серверге қосылуға болады. Егер сіз мұны істей алсаңыз, кез келген сұрауды орындаңыз. Сұрауларды өңдеуге тым ұзақ уақыт кетсе, арнайы MySQLTuner сценарийін пайдаланып MySQL-ті оңтайландыруға болады. Әдетте InnoDB қозғалтқыш пулының өлшемі innodb_buffer_pool_size параметрін орнату арқылы ұлғайтылады. Оңтайлы мән жоғарыдағы сценарий арқылы анықталады.
Егер ол 800 мегабайт болса (ол басқа өлшем болуы мүмкін), біз жазамыз:
$ sudo vi /etc/mysql/my.cnf innodb_buffer_pool_size=800M 
Мәселені шешудің тағы бір жолы бар. Ол үшін серверден жауап беру уақыты ұлғайтылады. Бұл тапсырманы орындау үшін wait_timeout параметрін өзгерту керек. Бұл серверден жауап күту қажет секундтармен берілген уақыт.
Мысалы:
wait_timeout=500 
Өзгерістерді енгізген кезде серверді қайта іске қосуды ұмытпаңыз:
$ sudo systemctl restart mysqlнемесе:
$ sudo systemctl restart mariadb Пайдаланушының клиенті тым көп пакеттерді жасағанда, сервер дәл осы қатені жібереді. Қол жетімді пакет өлшемін (максималды мән) max_allowed_packet параметрі арқылы арттыруға болады.
Мысалы:
$ sudo vi /etc/mysql/my.cnf max_allowed_packet=128M Клиентке ерекше назар аударыңыз, өйткені ол көп сұраныс жіберсе, онда сіз бірдеңені дұрыс істемейсіз. Кем дегенде, for циклдерін пайдаланып MySQL-ге сұраулар жасамауыңыз керек.
Егер сіз MySQL немесе MariaDB жүйесін Docker жүйесінде орналастыруды шешсеңіз, ұқсас қатені кездестіруге дайын болыңыз. Контейнерді бастапқы инициализациялау бос уақытты қажет етеді. Контейнерді алдымен тоқтатып, іске қосу арқылы баптандыруды аяқтауға рұқсат бермесеңіз, дерекқор әрқашан осы қатені қайтарады. Шешім дерекқормен бірге контейнер деректерін толығымен жою болып табылады.
Бұл келесідей орындалады:
$ docker-compose downнемесе:
$ docker rm mysql-containerӘрі қарай, дұрыс емес инициализацияланған дерекқоры бар жадты (көлемді) жою керек. Бірақ алдымен барлық репозиторийлердің тізімін қараңыз:
$ docker volume ls 
Содан кейін біз жоямыз:
$ docker volume rm volume_nameЕнді қолданбаны инициализациялауды бастауға болады, дерекқор сервері оның дайын екендігі туралы хабарлағанша күтіңіз және оған қосыла аласыз.