文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
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