"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como corrigir “Erro geral: o servidor MySQL 2006 desapareceu” ao inserir dados?

Como corrigir “Erro geral: o servidor MySQL 2006 desapareceu” ao inserir dados?

Postado em 2025-03-23
Navegar:877

How to Fix \

Como resolver "Erro geral: o servidor MySQL de 2006 desapareceu" ao inserir registros

Introdução:
A inserção de dados em um banco de dados MySQL pode ocasionalmente resultar no erro "Erro geral: o servidor MySQL de 2006 desapareceu." Este erro ocorre quando a conexão com o servidor é perdida, normalmente devido a uma das duas variáveis ​​na configuração do MySQL.

Solução:
A chave para resolver esse erro é ajustar as variáveis ​​wait_timeout e interact_timeout. Essas variáveis ​​controlam o tempo máximo que o MySQL esperará antes de encerrar uma conexão inativa.

Ajustando variáveis ​​de tempo limite:

  1. Conecte-se ao banco de dados usando seu método preferido ( por exemplo, PHP, console SQL).
  2. Execute a seguinte consulta: SET session wait_timeout=28800
  3. Além disso, se você encontrar o erro "Erro geral: 2013 Conexão perdida com o servidor MySQL durante a consulta", você também pode precisar executar: SET session Interactive_timeout=28800
  4. Execute o seguinte consulta para verificar os valores atualizados: SHOW VARIABLES LIKE '%timeout%'

Exemplo em PHP:

query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "
";
var_dump($results);
echo "
"; $results = $db->query("SET session wait_timeout=28800", FALSE); // UPDATE - this is also needed $results = $db->query("SET session interactive_timeout=28800", FALSE); $results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "
";
var_dump($results);
echo "
"; class db { public $mysqli; public function __construct() { $this->mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME); if (mysqli_connect_errno()) { exit(); } } public function __destruct() { $this->disconnect(); unset($this->mysqli); } public function disconnect() { $this->mysqli->close(); } function query($q, $resultset) { /* create a prepared statement */ if (!($stmt = $this->mysqli->prepare($q))) { echo("Sql Error: " . $q . ' Sql error #: ' . $this->mysqli->errno . ' - ' . $this->mysqli->error); return false; } /* execute query */ $stmt->execute(); if ($stmt->errno) { echo("Sql Error: " . $q . ' Sql error #: ' . $stmt->errno . ' - ' . $stmt->error); return false; } if ($resultset) { $result = $stmt->get_result(); for ($set = array(); $row = $result->fetch_assoc();) { $set[] = $row; } $stmt->close(); return $set; } } }
"; $resultados = $db->query("SET session wait_timeout=28800", FALSE); // ATUALIZAÇÃO - isso também é necessário $resultados = $db->query("SET session Interactive_timeout=28800", FALSE); $resultados = $db->query("MOSTRAR VARIÁVEIS LIKE '%timeout%'", TRUE); echo ""; var_dump($resultados); eco ""; classe banco de dados { público $mysqli; função pública __construir() { $this->mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME); if (mysqli_connect_errno()) { saída(); } } função pública __destruir() { $this->desconectar(); unset($this->mysqli); } função pública desconectar() { $this->mysqli->close(); } função consulta($q, $resultset) { /* cria uma instrução preparada */ if (!($stmt = $this->mysqli->prepare($q))) { echo("Erro SQL: " . $q . ' Erro SQL #: ' . $this->mysqli->errno . ' - ' . $this->mysqli->error); retornar falso; } /* executa a consulta */ $stmt->executar(); if ($stmt->erro) { echo("Erro SQL: " . $q . ' Erro SQL #: ' . $stmt->errno . ' - ' . $stmt->error); retornar falso; } if ($conjunto de resultados) { $resultado = $stmt->get_result(); for ($set = array(); $row = $resultado->fetch_assoc();) { $set[] = $linha; } $stmt->fechar(); retornar $conjunto; } } }

Considerações adicionais:

  • O valor padrão para wait_timeout é 28.800 segundos (8 horas), o que é excessivo. É recomendado configurá-lo para um valor mais baixo, como 300 segundos.
  • O aumento dos valores de tempo limite deve ser feito com cautela, pois pode levar a problemas de desempenho se as conexões não forem fechadas corretamente.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3