General error: 2013 Lost connection to MySQL server during query in Magento

O que fazer quando ocorrer o erro SQLSTATE[HY000]: General error: 2013 Lost connection to server during query, query was no . Principais motivos e Soluções que podem ser aplicadas.

General error: 2013 Lost connection to MySQL server during query in Magento

Este erro pode ocorrer quando realizada uma pesquisa que retorne qualquer produto, gerando a seguinte mensagem de erro no Magento.

Erro:

a:5:{i:0;s:494:" SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query, query was: INSERT INTO catalogsearch_result SELECT 2992 AS query_id, s.product_id, MATCH (s.data_index) AGAINST (:query IN BOOLEAN MODE) AS relevance FROM catalogsearch_fulltext AS sINNER JOIN catalog_product_entity AS e ON e.entity_id = s.product_id WHERE (s.store_id = 1) AND (MATCH (s.data_index) AGAINST (:query IN BOOLEAN MODE)) ON DUPLICATE KEY UPDATE relevance = VALUES(relevance) ";i:1;s:4001:"`

Erro completo ao realizar alguma ação no painel administrativo do Magento (Backend)

a:5:{i:0;s:287:"SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query, query was: SELECT `main_table`.* FROM `design_change` AS `main_table` WHERE (store_id = :store_id) AND (date_from <= :required_date or date_from IS NULL) AND (date_to >= :required_date or date_to IS NULL)";i:1;s:2865:"#0 /home/storage/b/ec/e4/xxx/public_html/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#2 /home/storage/b/ec/e4/xxx/public_html/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#3 /home/storage/b/ec/e4/xxx/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `main_ta...', Array)
#4 /home/storage/b/ec/e4/xxx/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(504): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `main_ta...', Array)
#5 /home/storage/b/ec/e4/xxx/public_html/lib/Zend/Db/Adapter/Abstract.php(756): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#6 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Model/Resource/Design.php(179): Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select), Array)
#7 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Model/Design.php(62): Mage_Core_Model_Resource_Design->loadChange('1', NULL)
#8 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Model/App/Area.php(162): Mage_Core_Model_Design->loadChange('1')
#9 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Model/App/Area.php(124): Mage_Core_Model_App_Area->_initDesign()
#10 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Model/App/Area.php(92): Mage_Core_Model_App_Area->_loadPart('design')
#11 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Model/App.php(789): Mage_Core_Model_App_Area->load()
#12 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(512): Mage_Core_Model_App->loadArea('frontend')
#13 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Controller/Front/Action.php(69): Mage_Core_Controller_Varien_Action->preDispatch()
#14 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(407): Mage_Core_Controller_Front_Action->preDispatch()
#15 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('view')
#16 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#17 /home/storage/b/ec/e4/xxx/public_html/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#18 /home/storage/b/ec/e4/xxx/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#19 /home/storage/b/ec/e4/xxx/public_html/index.php(95): Mage::run('', 'store')
#20 {main}";s:3:"url";s:22:"/micropigmentac-o.html";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}

Primeira Solução

Primeiro você exclui a pasta de bloqueios no diretório (exemplo: public_html/var/lock) var: var / lock

Verifique se a permissão da pasta var / lock e todos os arquivos no diretório de bloqueios estão com 777.

Faça um backup do e exclua catalog_product_flat_1, catalog_product_flat_2 ou se houver outro.

Execute o seguinte código pelo terminal

indexer.php –reindex catalogsearch_fulltext Isto irá reindexar seu Índice de Pesquisa de Catálogo ou se você deseja atualizar todos os índices executados:

php indexer.php reindexall

Não resolveu o problema?

Soluções alternativas para erro Lost connection to Mysql

Verifique uma das opções abaixo e veja qual a melhor solução se aplica em sua loja. Tais motivos listados são genéricos e podem resolver este erro em qualquer aplicação (não apenas no Magento)

Conexão persistente

1) Você está usando uma conexão DB persistente? As tabelas estão sendo usadas / bloqueadas durante sua consulta? Verifique a utilização da função de conexão mysql_pconnect mysql_pconnect – Abra uma conexão persistente com um servidor MySQL

Estabelece uma conexão persistente com um servidor MySQL. mysql_pconnect () atua muito como mysql_connect () com duas grandes diferenças.

Primeiro, ao conectar-se, a função tentaria primeiro encontrar um link (persistente) que já esteja aberto com o mesmo host, nome de usuário e senha. Se for encontrado, um identificador será retornado em vez de abrir uma nova conexão.

Em segundo lugar, a conexão com o servidor SQL não será fechada quando a execução do script terminar.

Em vez disso, o link permanecerá aberto para uso futuro (mysql_close () não fechará os links estabelecidos pelo mysql_pconnect ()). Este tipo de link é, portanto, chamado de “persistente”.

Tempo limite de conexão

2) Talvez você precise ajustar o tempo limite padrão para o MySQL? Veja aqui como mudar o tempo limite do MySQL em um servidor

Siga estas etapas para resolver o problema:

Faça login no seu servidor usando o .

Edite my.cnf (o arquivo de configuração do MySQL).

sudo vi /etc/my.cnf

Localize a configuração do tempo limite e ajuste-a para o seu servidor.

wait_timeout = 28800
interactive_timeout = 28800

O tempo limite interativo não afeta nenhuma conexão de aplicativo da . Um tempo interativo alto, mas um tempo de espera baixo é normal e é a melhor prática.

Escolha um valor wait_timeout razoável. Ambientes PHP sem estado fazem bem com um tempo limite de 60 segundos ou menos. de estado que usam um pool de conexão (Java, .NET, etc.) precisarão ajustar wait_timeout para combinar suas configurações de pool de conexão. As 8 horas padrão (wait_timeout = 28800) funcionam bem com pools de conexão configurados corretamente.

Configure o wait_timeout para ser um pouco mais longo do que a vida de conexão esperada do pool de conexão do aplicativo. Esta é uma boa verificação de .

Considere mudar o valor wait_timeout online. Isso não requer uma reinicialização do MySQL e o wait_timeout pode ser ajustado no servidor em execução sem incorrer em tempo de inatividade. Você emitiria set global wait_timeout = 60 e quaisquer novas sessões criadas herdariam esse valor. Certifique-se de preservar a configuração em my.cnf. Todas as conexões existentes precisarão atingir o valor antigo de wait_timeout se o aplicativo abandonar a conexão. Se você tiver trabalhos de relatório que farão um processamento local mais longo enquanto estiver em uma transação, você pode considerar ter esses problemas de trabalho definir sessão wait_timeout = 3600 após a conexão.

Salve as mudanças e saia do editor.

Reinicie o MySQL para aplicar as alterações da seguinte maneira:

sudo /etc/init.d/mysql restart

Consultas grandes

3) Há também uma boa resposta aqui, que pode ser o seu problema, uma vez que é uma consulta tão grande: conexão perdida com o servidor MySQL durante a consulta

Você também pode obter esses erros se você enviar uma consulta ao servidor incorreta ou muito grande. Se o mysqld receber um pacote que é muito grande ou fora de ordem, assume que algo deu errado com o cliente e fecha a conexão. Se você precisar de grandes consultas (por exemplo, se estiver trabalhando com grandes colunas BLOB), você pode aumentar o limite de consulta configurando a variável max_allowed_packet do servidor, que tem um valor padrão de 1 MB. Você também pode precisar aumentar o tamanho máximo do pacote no final do cliente. Mais informações sobre a configuração do tamanho do pacote são fornecidas na Seção B.5.2.10, “Pacote muito grande”.

Você pode obter mais informações sobre as conexões perdidas iniciando mysqld com a opção –log-warnings = 2. Isso registra alguns dos erros desconectados no arquivo hostname.err

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *