Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách giải quyết Lỗi chung:Máy chủ MySQL 2006 đã biến mất

Tôi muốn nói rằng vấn đề là với wait_timeout . Nó được đặt thành 30 giây trên máy chủ chia sẻ của tôi và trên máy chủ cục bộ của tôi được đặt là 28800.

Tôi thấy rằng tôi có thể thay đổi nó cho phiên, vì vậy bạn có thể đưa ra truy vấn:SET session wait_timeout =28800

CẬP NHẬT OP xác định rằng anh ta cũng cần thay đổi biến interactive_timeout cũng. Điều này có thể cần hoặc có thể không cần thiết cho tất cả mọi người.

Đoạn mã dưới đây hiển thị cài đặt trước và sau khi thay đổi để xác minh rằng nó đã được thay đổi.

Vì vậy, hãy đặt wait_timeout =28800 (và tương tác_timeout =28800) ở đầu truy vấn của bạn và xem nó có hoàn thành hay không.

Hãy nhớ chèn thông tin đăng nhập db của riêng bạn thay cho DB_SERVER, DB_USER, DB_PASS, DB_NAME

CẬP NHẬT Ngoài ra, nếu điều này có hiệu quả, bạn muốn biết rõ mình đang làm gì bằng cách đặt wait_timeout cao hơn. Đặt nó thành 28800 là 8 giờ và là rất nhiều.

Sau đây là từ trang web này . Nó khuyên bạn nên đặt wait_timeout thành 300 - tôi sẽ thử và báo cáo lại với kết quả của mình (sau vài tuần).

 <?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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP:Nếu bản ghi tồn tại thì hiển thị HTML, còn lại không hiển thị gì

  2. Điều gì xảy ra nếu tôi thả một cột MySQL mà không giảm chỉ mục của nó trước?

  3. Dấu thời gian MySQL sang chuyển đổi ngày Java

  4. Django Nhiều cơ sở dữ liệu Dự phòng cho Master nếu Slave bị lỗi

  5. Chỉ cập nhật MySQL cột nếu giá trị không trống ở đâu