Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

B.3.2.16 文件未找到和类似错误

如果您收到 错误 'file_name' 未找到 (errno: 23), 无法打开文件: file_name (errno: 24), 或者从 MySQL 中的任何其他错误 errno 23 或 errno 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 打开较少的文件,可以减少 table_open_cache 系统变量的值(默认值为 64)。这可能不会完全防止文件描述符不足,因为在某些情况下服务器可能会临时扩展缓存大小,如 第 10.4.3.1 节,“MySQL 如何打开和关闭表” 所述。减少 max_connections 的值也将减少打开的文件数量(默认值为 100)。

要更改可用的文件描述符数量,可以使用 --open-files-limit 选项来 mysqld_safe 或设置 open_files_limit 系统变量。见 第 7.1.8 节,“服务器系统变量”。最简单的方法是将选项添加到选项文件中。见 第 6.2.2.2 节,“使用选项文件”。如果您有一个旧版本的 mysqld,它不支持设置打开文件限制,可以编辑 mysqld_safe 脚本。在脚本中有一行注释掉的 ulimit -n 256。您可以删除 # 字符以取消注释这行,并将数字 256 更改为设置可用的文件描述符数量。

--open-files-limitulimit 可以增加文件描述符的数量,但只能增加到操作系统施加的限制。还有一个“硬”限制,可以被覆盖,但只有在以 root 身份启动 mysqld_safemysqld 时(请记住,您也需要使用 --user 选项,以便服务器在启动后不再以 root 身份运行)。如果您需要增加操作系统对每个进程的文件描述符限制,请查看您的系统文档。

Note

如果您运行 tcsh shell,ulimit 不起作用!tcsh 也报告当前限制的不正确值。在这种情况下,您应该使用 sh 启动 mysqld_safe