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

[](<>)[](<>)

如果你得到`错误 '*`文件名`*' 未找到 (errno: 23)`,`无法打开文件：*`文件名`*（错误号：24）`，或任何其他错误`错误号 23`要么`错误号 24`来自 MySQL，这意味着您没有为 MySQL 服务器分配足够的文件描述符。您可以使用[**错误**](perror.html)实用程序来获取错误号含义的描述：

```
$> 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.html)正试图同时打开太多文件。你可以告诉[**mysqld**](mysqld.html)不要一次打开这么多文件或增加可用的文件描述符的数量[**mysqld**](mysqld.html).

告诉[**mysqld**](mysqld.html)要一次保持打开的文件更少，您可以通过减小[`table_open_cache`](server-system-variables.html#sysvar_table_open_cache)系统变量（默认值为 64）。这可能不能完全防止文件描述符用完，因为在某些情况下，服务器可能会尝试临时扩展缓存大小，如中所述[第 8.4.3.1 节，“MySQL 如何打开和关闭表”](table-cache.html).降低价值[`最大连接数`](server-system-variables.html#sysvar_max_connections)还减少了打开文件的数量（默认值为 100）。

[](<>)

更改可用于的文件描述符的数量[**mysqld**](mysqld.html), 你可以使用[`--open-files-limit`](mysqld-safe.html#option_mysqld_safe_open-files-limit)选项[**mysqld\_安全的**](mysqld-safe.html)或设置[`open_files_limit`](server-system-variables.html#sysvar_open_files_limit)系统变量。看[第 5.1.8 节，“服务器系统变量”](server-system-variables.html).设置这些值的最简单方法是在选项文件中添加一个选项。看[第 4.2.2.2 节，“使用选项文件”](option-files.html).如果您有旧版本的[**mysqld**](mysqld.html)不支持设置打开文件限制，您可以编辑[**mysqld\_安全的**](mysqld-safe.html)脚本。有一个注释掉的行**ulimit -n 256**在脚本中。您可以删除`#`取消注释这一行的字符，并更改数字`256`设置可用的文件描述符的数量[**mysqld**](mysqld.html).

[`--open-files-limit`](mysqld-safe.html#option_mysqld_safe_open-files-limit)和**超限**可以增加文件描述符的数量，但只能达到操作系统强加的限制。还有一个“硬”限制，只有在你开始时才能被覆盖[**mysqld\_安全的**](mysqld-safe.html)要么[**mysqld**](mysqld.html)作为`根`（请记住，您还需要使用[`- 用户`](server-options.html#option_mysqld_user)在这种情况下的选项，以便它不会继续运行`根`启动后）。如果您需要增加操作系统对每个进程可用的文件描述符数量的限制，请查阅您系统的文档。

笔记

如果你运行**tcsh**贝壳，**超限**不工作！**tcsh**当您询问当前限制时，还会报告不正确的值。在这种情况下，您应该开始[**mysqld\_安全的**](mysqld-safe.html)使用**嘘**.
