文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


B.3.2.16 找不到檔案及類似錯誤

如果您收到 ERROR 'file_name' not found (errno: 23)Can't open file: file_name (errno: 24) 或任何其他來自 MySQL、且具有 errno 23errno 24 的錯誤,表示您尚未為 MySQL 伺服器配置足夠的檔案描述符。您可以使用 perror 公用程式來取得錯誤碼的說明。

$> perror 23
OS error code  23:  File table overflow
$> perror 24
OS error code  24:  Too many open files
$> perror 11
OS error code  11:  Resource temporarily unavailable

這裡的問題是 mysqld 嘗試同時保持開啟太多檔案。您可以告訴 mysqld 不要一次開啟太多檔案,或增加 mysqld 可用的檔案描述符數量。

若要告訴 mysqld 一次保持開啟較少的檔案,您可以藉由減少 table_open_cache 系統變數的值(預設值為 64)來縮小表格快取。這可能無法完全防止檔案描述符用完,因為在某些情況下,伺服器可能會嘗試暫時擴展快取大小,如第 10.4.3.1 節「MySQL 如何開啟和關閉表格」中所述。減少 max_connections 的值(預設值為 100)也會減少開啟的檔案數量。

若要變更 mysqld 可用的檔案描述符數量,您可以使用 --open-files-limit 選項給 mysqld_safe,或設定 open_files_limit 系統變數。請參閱 第 7.1.8 節「伺服器系統變數」。設定這些值最簡單的方法是在選項檔中新增一個選項。請參閱第 6.2.2.2 節「使用選項檔」。如果您使用的是不支援設定開啟檔案限制的舊版本 mysqld,您可以編輯 mysqld_safe 腳本。腳本中有一行已註解的 ulimit -n 256。您可以移除 # 字元來取消註解這行,並將數字 256 變更為要提供給 mysqld 的檔案描述符數量。

--open-files-limitulimit 可以增加檔案描述符的數量,但只能增加到作業系統施加的限制。還有一個 硬性 限制,只有當您以 root 身分啟動 mysqld_safemysqld 時才能覆寫(只要記住,在這種情況下,您還需要使用 --user 選項啟動伺服器,以便在伺服器啟動後不會繼續以 root 身分執行)。如果您需要增加每個程序可用的檔案描述符的作業系統限制,請參閱您系統的文件。

注意

如果您執行 tcsh shell,ulimit 將無法運作!當您要求目前的限制時,tcsh 也會報告不正確的值。在這種情況下,您應該使用 sh 啟動 mysqld_safe