IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

分類:

, , ,

如何解決PHP程式輸入SQL數據時‧出現『Error while reading SET_OPTION’s response packet』錯誤

01. 一直都用以下程式,在網站回復SQL數據庫,好處是當然不用每次人手登入phpMyAdmin來回復SQL數據庫。

<?php
$in_file = 'db_table';
$file_2 = 'db.sql';
$sql = file_get_contents($file_2);
$mysqli = new mysqli('localhost', 'root', 'password', $in_file);
mysqli_set_charset($mysqli,'utf8');
$mysqli->query('SET foreign_key_checks = 0');
if ($result = $mysqli->query("SHOW TABLES")) {
while($row = $result->fetch_array(MYSQLI_NUM)) {
$mysqli->query('DROP TABLE IF EXISTS '.$row[0]);
}
}
$mysqli->query('SET foreign_key_checks = 1');
if ($mysqli->multi_query($sql)) {
$mysqli -> close();
echo 'success';
}
?>

02. 但不知那天開始,程式執行時出現『Warning: mysqli::multi_query(): Error while reading SET_OPTION’s response packet.』錯誤。

03. 根據錯誤行數,是『$mysqli->multi_query($sql)』這一句出現錯誤。但問題是這一句只是簡單的將SQL檔案內容,輸入到MySQL數據庫內。

04. 檢查了PHP版本及設定,也網上找過了幾個方法。如每個數據庫輸入時,也用新的連線『new mysqli()』,但問題依然沒有解決。

05. 直到看到另一個方法,就是MySQL中『my.ini』設定。

將:
max_allowed_packet=1M
更改為
max_allowed_packet=16M

06. 再重新啟動MySQL服務,問題就解決了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *