Heim > Datenbank > MySQL-Tutorial > Wie behebt man den „Allgemeinen Fehler: 2006 MySQL Server ist nicht mehr verfügbar' beim Einfügen von Daten?

Wie behebt man den „Allgemeinen Fehler: 2006 MySQL Server ist nicht mehr verfügbar' beim Einfügen von Daten?

Linda Hamilton
Freigeben: 2024-10-29 11:25:30
Original
310 Leute haben es durchsucht

How to Fix

So beheben Sie „Allgemeiner Fehler: 2006 MySQL-Server ist verschwunden“ beim Einfügen von Datensätzen

Einführung:
Das Einfügen von Daten in eine MySQL-Datenbank kann gelegentlich zu der Fehlermeldung „Allgemeiner Fehler: 2006 MySQL-Server ist nicht mehr verfügbar“ führen. Dieser Fehler tritt auf, wenn die Verbindung zum Server verloren geht, typischerweise aufgrund einer von zwei Variablen in der MySQL-Konfiguration.

Lösung:
Der Schlüssel zur Behebung dieses Fehlers liegt in der Anpassung die Variablen „wait_timeout“ und „interactive_timeout“. Diese Variablen steuern die maximale Zeit, die MySQL wartet, bevor eine inaktive Verbindung beendet wird.

Timeout-Variablen anpassen:

  1. Stellen Sie mit Ihrer bevorzugten Methode eine Verbindung zur Datenbank her ( z. B. PHP, SQL-Konsole).
  2. Führen Sie die folgende Abfrage aus: SET session wait_timeout=28800
  3. Außerdem, wenn Sie auf den Fehler „Allgemeiner Fehler: 2013 Verbindung zum MySQL-Server während der Abfrage verloren“ stoßen, " Möglicherweise müssen Sie auch Folgendes ausführen: SET session Interactive_timeout=28800
  4. Führen Sie die folgende Abfrage aus, um die aktualisierten Werte zu überprüfen: SHOW VARIABLES LIKE '%timeout%'

Beispiel in PHP:

<code class="php"><?php

$db = new db();

$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "<pre class="brush:php;toolbar:false">";
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; } } }
Nach dem Login kopieren

Zusätzliche Überlegungen:

  • Der Standardwert für wait_timeout beträgt 28800 Sekunden (8 Stunden), was zu hoch ist. Es wird empfohlen, einen niedrigeren Wert festzulegen, beispielsweise 300 Sekunden.
  • Das Erhöhen der Timeout-Werte sollte mit Vorsicht erfolgen, da es zu Leistungsproblemen führen kann, wenn Verbindungen nicht ordnungsgemäß geschlossen werden.

Das obige ist der detaillierte Inhalt vonWie behebt man den „Allgemeinen Fehler: 2006 MySQL Server ist nicht mehr verfügbar' beim Einfügen von Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage