發佈日期:
分類:
如何解決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服務,問題就解決了。
發佈留言