Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP Mysql PDO:Обща грешка:2006 MySQL сървърът е изчезнал

Някои други често срещани причини грешката на MySQL сървъра да е изчезнала са:

  • Вие (или администраторът на db) сте убили текущата нишка с оператор KILL или команда за убийство на mysqladmin.

  • Опитахте се да изпълните заявка след затваряне на връзката със сървъра. Това показва логическа грешка в приложението, която трябва да бъде коригирана.

  • Клиентско приложение, работещо на различен хост, няма необходимите привилегии, за да се свърже с MySQL сървъра от този хост.

  • Имате изчакване от TCP/IP връзката от страна на клиента. Това може да се случи, ако сте използвали командите:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) или mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...). В този случай увеличаването на времето за изчакване може да помогне за решаването на проблема.

  • Натъкнахте се на изчакване от страна на сървъра и автоматичното повторно свързване в клиента е деактивирано (флагът за повторно свързване в структурата на MYSQL е равен на 0).

  • Вие използвате клиент на Windows и сървърът е прекъснал връзката (вероятно защото wait_timeout е изтекъл), преди командата да бъде издадена.

  • Проблемът в Windows е, че в някои случаи MySQL не получава грешка от операционната система, когато пише в TCP/IP връзката към сървъра, а вместо това получава грешката, когато се опитва да прочете отговора от връзката.

  • Решението за това е или да направите mysql_ping() на връзката, ако е минало много време от последната заявка (това прави Connector/ODBC) или да зададете wait_timeout на mysqld сървъра толкова високо, че на практика никога не се повтаря навън.

  • Можете също да получите тези грешки, ако изпратите заявка до сървъра, която е неправилна или твърде голяма. Ако mysqld получи пакет, който е твърде голям или не е в ред, той приема, че нещо се е объркало с клиента и затваря връзката. Ако имате нужда от големи заявки (например, ако работите с големи BLOB колони), можете да увеличите ограничението на заявките, като зададете променливата max_allowed_packet на сървъра, която има стойност по подразбиране от 4MB. Може също да се наложи да увеличите максималния размер на пакета от страна на клиента. Повече информация за настройката на размера на пакета е дадена в раздел B.5.2.10, „Пакетът е твърде голям“.

  • Инструкция INSERT или REPLACE, която вмъква много редове, също може да причини подобни грешки. Всеки един от тези изрази изпраща единична заявка до сървъра, независимо от броя на редовете, които трябва да бъдат вмъкнати; по този начин често можете да избегнете грешката, като намалите броя на редовете, изпращани на INSERT или REPLACE.

  • Освен това получавате загубена връзка, ако изпращате пакет от 16MB или по-голям, ако клиентът ви е по-стар от 4.0.8 и сървърът ви е 4.0.8 и по-нова версия, или обратното.

  • Възможно е също да видите тази грешка, ако търсенето на име на хост не успее (например, ако DNS сървърът, на който разчита вашият сървър или мрежа, изпадне). Това е така, защото MySQL зависи от хост системата за разделяне на имена, но няма начин да разбере дали работи — от гледна точка на MySQL проблемът е неразличим от който и да е друг изчакване на мрежата.

  • Може също да видите, че MySQL сървърът е изчезнал, ако MySQL се стартира с опцията --skip-networking.

  • Друг проблем с мрежата, който може да причини тази грешка, възниква, ако портът MySQL (по подразбиране 3306) е блокиран от вашата защитна стена, като по този начин се предотвратяват всякакви връзки към MySQL сървъра.

  • Можете също да срещнете тази грешка с приложения, които се разделят на дъщерни процеси, всички от които се опитват да използват една и съща връзка към MySQL сървъра. Това може да се избегне, като се използва отделна връзка за всеки дъщерен процес.

  • Срещнахте грешка, при която сървърът умря при изпълнение на заявката.

Проверете тази връзка:Gone Away




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. едновременно ЧЕТЕНЕ и ПИСАНЕ на MySQL таблица

  2. MySQL, за да получите броя на редовете, които попадат на дата за всеки ден от месеца

  3. Python Mysql, команди не са синхронизирани; не можете да изпълните тази команда сега

  4. Индексирайте MySQL база данни с Apache Lucene и ги поддържайте синхронизирани

  5. Как да деблокирате с mysqladmin flush хостове