sql >> Databáze >  >> RDS >> Mysql

PHP Mysql PDO:Obecná chyba:2006 MySQL server odešel

Některé další běžné příčiny chyby serveru MySQL jsou:

  • Vy (nebo správce databáze) jste zabili běžící vlákno pomocí příkazu KILL nebo příkazu mysqladmin kill.

  • Pokusili jste se spustit dotaz po uzavření připojení k serveru. To označuje logickou chybu v aplikaci, která by měla být opravena.

  • Klientská aplikace běžící na jiném hostiteli nemá potřebná oprávnění pro připojení k serveru MySQL z tohoto hostitele.

  • Vypršel časový limit připojení TCP/IP na straně klienta. To se může stát, pokud jste používali příkazy:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) nebo mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...). V tomto případě může prodloužení časového limitu pomoci vyřešit problém.

  • Na straně serveru došlo k vypršení časového limitu a automatické opětovné připojení v klientovi je zakázáno (příznak opětovného připojení ve struktuře MYSQL je roven 0).

  • Používáte klienta Windows a server přerušil spojení (pravděpodobně proto, že vypršela doba čekání) před zadáním příkazu.

  • Problém ve Windows je v tom, že v některých případech MySQL neobdrží chybu od operačního systému při zápisu do TCP/IP připojení k serveru, ale místo toho dostane chybu, když se pokusí přečíst odpověď z připojení.

  • Řešením je buď provést mysql_ping() na připojení, pokud od posledního dotazu uplynula dlouhá doba (to dělá Connector/ODBC), nebo nastavit wait_timeout na serveru mysqld tak vysoko, že se to v praxi nikdy neopakuje. ven.

  • Tyto chyby se také mohou zobrazit, pokud na server odešlete dotaz, který je nesprávný nebo příliš velký. Pokud mysqld přijme paket, který je příliš velký nebo mimo provoz, předpokládá, že se s klientem něco pokazilo, a uzavře spojení. Pokud potřebujete velké dotazy (například pokud pracujete s velkými sloupci BLOB), můžete zvýšit limit dotazů nastavením proměnné max_allowed_packet serveru, která má výchozí hodnotu 4 MB. Může být také nutné zvýšit maximální velikost paketu na straně klienta. Více informací o nastavení velikosti paketu je uvedeno v části B.5.2.10 – „Paket je příliš velký“.

  • Příkaz INSERT nebo REPLACE, který vkládá velké množství řádků, může také způsobit tyto druhy chyb. Každý z těchto příkazů odešle na server jediný požadavek bez ohledu na počet řádků, které mají být vloženy; chybám se tedy často můžete vyhnout snížením počtu řádků odeslaných na INSERT nebo REPLACE.

  • Ztratíte také spojení, pokud odesíláte paket o velikosti 16 MB nebo větší, pokud je váš klient starší než 4.0.8 a váš server je verze 4.0.8 a vyšší, nebo naopak.

  • Tato chyba se také může zobrazit, pokud vyhledávání názvu hostitele selže (například pokud dojde k výpadku serveru DNS, na kterém závisí váš server nebo síť). Důvodem je to, že MySQL je při překladu názvů závislá na hostitelském systému, ale nemá žádný způsob, jak zjistit, zda funguje – z pohledu MySQL je problém nerozeznatelný od jakéhokoli jiného síťového časového limitu.

  • Pokud je MySQL spuštěn s volbou --skip-networking, můžete také vidět chybu MySQL server zmizel.

  • K dalšímu síťovému problému, který může způsobit tuto chybu, dochází, pokud je port MySQL (výchozí 3306) blokován vaším firewallem, a tím brání jakémukoli připojení k serveru MySQL.

  • S touto chybou se můžete setkat také u aplikací, které rozvětvují podřízené procesy a všechny se snaží používat stejné připojení k serveru MySQL. Tomu se lze vyhnout použitím samostatného připojení pro každý podřízený proces.

  • Narazili jste na chybu, při které došlo k výpadku serveru při provádění dotazu.

Zkontrolujte tento odkaz:Gone Away




  1. Jak pole json_encode s francouzskými akcenty?

  2. Chyba s dotazem Symfony:Expected Literal, dostal ''

  3. rozdělená klíčová slova pro post php mysql

  4. Přítel přítele v PHP/MySQL?