亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL 服務器已消失,不一致的錯誤,由單個腳本引起

MySQL 服務器已消失,不一致的錯誤,由單個腳本引起

PHP
守著星空守著你 2022-10-22 16:42:24
我有一個 PHP 腳本正在啟動一個 SQL 查詢,在根據我服務器上名為table.獲得結果后,應該將這些記錄插入(使用替換)到我服務器上的另一個數據庫表中。當table是一個簡單的核心表時,該腳本可以完美地工作。我后來修改了 SQL 查詢以使用 VIEW 表中的數據,我們可以稱之為 VIEW 表,它view_table基于table但有一個額外的列,它是動態計算的。這使得腳本開始崩潰我的整個 SQL 服務器,每隔一段時間,拋出這個錯誤:PHP 警告:mysqli::query(): MySQL server has gone away in /home/user/script.php on line 109下面是第 109 行:function getRecordsFromDB(){    logMemoryUtilizationDetails();    file_put_contents(LOG_DIRECTORY.'service.log', date("d/m:H:i").':'."getRecordsFromDB::Entry".PHP_EOL, FILE_APPEND);    global $sourceConn;    $selectQuery = file_get_contents(__DIR__.'/my-query.sql');    $items = array();    $result = $sourceConn->query($selectQuery); // LINE 109    if ($result){        if ($result->num_rows > 0) {            while($row = $result->fetch_assoc()) {                $item = new Item();                $item->id               = $row['id'];                $item->itemId               = $row['itemid'];我嘗試記錄創建以查看腳本在啟動和退出時使用了多少內存,當它成功時,它在峰值時只使用了大約 37MB 的 RAM。我的服務器在 4 個內核上有 6GB 的 RAM。我的服務器上沒有運行其他腳本會導致 SQL 服務器像這樣崩潰,所以我確信這個腳本會導致崩潰。這是我的服務器的 MY.CNF:[mysqld]# disable mysql strict modesql_mode=""log-error=/var/lib/mysql/host.myhost.com.errperformance_schema=1query_cache_type=0query_cache_size=0query_cache_limit=0key_buffer_size=16Mmax_connections=200max_tmp_tables=1table_open_cache=2000local-infile=0thread_cache_size=4innodb_file_per_table=1default-storage-engine=MyISAMinnodb_use_native_aio=0max_allowed_packet=1024Minnodb_buffer_pool_size=800Mopen_files_limit=10000#wait_timeout=500tmp_table_size=256Mmax_heap_table_size=256Minnodb_buffer_pool_instances=1#general_log=on#general_log_file = /var/lib/mysql/all-queries.logslow-query-log=0slow-query-log-file=/var/lib/mysql/slow_queries.loglong_query_time=1.0#log_queries_not_using_indexes=1這是來自我的 PHP.INI(對于我正在使用的 PHP 7.2):max_execution_time = 240max_input_time = 60max_input_vars = 1000memory_limit = 512M
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

看起來像一個超時或失敗的查詢。請粘貼您正在使用的 sql 查詢。您也可以嘗試通過將查詢粘貼到您的 mysql IDE(我最喜歡 Navicat)并在其前面加上“解釋擴展”(不帶引號)來查看查詢可能導致此問題的位置。所以你的查詢看起來像'解釋擴展選擇......(所有 300 行)' 尋找高于 4 的鍵,沒有主鍵和查詢的行對于初學者來說非常高。此外,您可能希望考慮創建一個存儲過程而不是視圖,在該存儲過程中您可以將所有內容選擇到臨時表中,然后在下一個查詢中執行即時計算值。當然,您需要配置 my.cnf 以識別臨時表,以便在會話完成后將其銷毀。此外,如果您有任何復制或服務器集群,

如果您愿意,請粘貼您的 my.cnf(mysql 配置文件)以確保您的配置最適合大型查詢。

此外,出于故障排除的目的,您可能希望暫時增加 php.ini 中的最大執行時間。


查看完整回答
反對 回復 2022-10-22
  • 1 回答
  • 0 關注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號