레코드를 삽입하는 동안 "일반 오류: 2006 MySQL 서버가 사라졌습니다."를 해결하는 방법
소개:
MySQL 데이터베이스에 데이터를 삽입하면 "일반 오류: 2006 MySQL 서버가 사라졌습니다."라는 오류가 발생할 수 있습니다. 이 오류는 일반적으로 MySQL 구성의 두 가지 변수 중 하나로 인해 서버 연결이 끊어졌을 때 발생합니다.
해결책:
이 오류를 해결하는 핵심은 조정하는 것입니다. wait_timeout 및 Interactive_timeout 변수. 이러한 변수는 비활성 연결을 종료하기 전에 MySQL이 대기하는 최대 시간을 제어합니다.
시간 초과 변수 조정:
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;
}
}
}
";
$results = $db->query("SET 세션 wait_timeout=28800", FALSE);
// 업데이트 - 이것도 필요합니다
$results = $db->query("SET 세션 Interactive_timeout=28800", FALSE);
$results = $db->query("'%timeout%'와 같은 변수 표시", TRUE);
echo "";
var_dump($results);
에코 "";
클래스 DB {
공개 $mysqli;
공개 함수 __construct() {
$this->mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if (mysqli_connect_errno()) {
출구();
}
}
공개 함수 __destruct() {
$this->연결 해제();
unset($this->mysqli);
}
공개 함수 연결 해제() {
$this->mysqli->close();
}
함수 쿼리($q, $resultset) {
/* 준비된 명령문 생성 */
if (!($stmt = $this->mysqli->prepare($q))) {
echo("SQL 오류: " . $q . ' SQL 오류 #: ' . $this->mysqli->errno . ' - ' . $this->mysqli->error);
거짓을 반환;
}
/* 쿼리 실행 */
$stmt->실행();
if ($stmt->errno) {
echo("SQL 오류: " . $q . ' SQL 오류 #: ' . $stmt->errno . ' - ' . $stmt->error);
거짓을 반환;
}
if ($resultset) {
$result = $stmt->get_result();
for ($set = array(); $row = $result->fetch_assoc();) {
$set[] = $행;
}
$stmt->닫기();
$세트를 반환합니다.
}
}
}추가 고려 사항:
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3