sql >> Database >  >> RDS >> Mysql

Hoe op te lossen Algemene fout:2006 MySQL-server is verdwenen

Ik zou durven zeggen dat het probleem zit in wait_timeout . Het is ingesteld op 30 seconden op mijn gedeelde host en op mijn lokale host is ingesteld op 28800.

Ik heb ontdekt dat ik het voor de sessie kan wijzigen, zodat u de volgende vraag kunt stellen:SET session wait_timeout=28800

UPDATE De OP stelde vast dat hij ook de variabele interactive_timeout . moest wijzigen ook. Dit kan wel of niet voor iedereen nodig zijn.

De onderstaande code toont de instelling voor en na de wijziging om te controleren of deze is gewijzigd.

Stel dus wait_timeout=28800 (en interactive_timeout =28800) in aan het begin van uw zoekopdracht en kijk of deze is voltooid.

Vergeet niet om uw eigen db-referenties in te voeren in plaats van DB_SERVER, DB_USER, DB_PASS, DB_NAME

UPDATE Als dit wel werkt, wil je ook duidelijk zijn over wat je doet door wait_timeout hoger in te stellen. Instellen op 28800 is 8 uur en dat is veel.

Het volgende is van deze site . Het raadt aan om wait_timeout in te stellen op 300 - wat ik zal proberen en zal rapporteren met mijn resultaten (na een paar weken).

<?php

$db = new db();

$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);
echo "<pre>";
var_dump($results);
echo "</pre>";

$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 "<pre>";
var_dump($results);
echo "</pre>";


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;
        }
    }
}
 


  1. Kan geen verbinding maken met de lokale MySQL-server via socket homebrew

  2. SUM(subquery) in MYSQL

  3. SQL-serverquery om de lijst met kolommen in een tabel te krijgen, samen met gegevenstypen, NOT NULL en PRIMARY KEY-beperkingen

  4. Hoe tags in de database in te voegen met behulp van jQuery html en php