【问题标题】:Error Code: 23 Out of resources when opening file错误代码:23 打开文件时资源不足
【发布时间】:2015-10-17 04:51:18
【问题描述】:

当我在 MySQL 中执行查询时,我收到此错误:

错误代码:23
打开文件 '.\test\sample_table#P#p364.MYD' 时资源不足(错误代码:24 - 打开的文件过多)

MySQL 版本详情:

VERSION                   5.6.21 
version_comment           MySQL Community SERVER (GPL)
version_compile_machine   x86_64
version_compile_os        Win64

如何解决这个问题?

【问题讨论】:

标签: mysql


【解决方案1】:

如果您碰巧(像我一样)通过对 35k 行数据运行单个插入查询来进行一些骇人听闻的服务器维护,那么提高open_files_limit 是不是的答案。试着把你的陈述分解成多个小块。

这里有一些我如何解决我的问题的python代码来说明:

headers = ['field_1', 'field_2', 'field_3']
data = [('some stuff', 12, 89.3), ...] # 35k rows worth

insert_template = "\ninsert into my_schema.my_table ({}) values {};"
value_template = "('{}', {}, {})"

start = 0
chunk_size = 1000
total = len(data)
sql = ''
while start < total:
    end = start + chunk_size

    values = ", \n".join([
        value_template.format(*row) 
        for row in data[start:end]
    ])

    sql += template.format(headers, values)

    start = end

请注意,我不建议作为一项规则运行这样的语句;我的工作快速而肮脏,忽略了适当的清理和连接管理。

【讨论】:

    【解决方案2】:

    mysql 报错:Out of resources when opening file... (Errcode: 24) 表示已经超过了msyql允许打开的文件数。

    此限制由变量 open_files_limit 控制。您可以使用以下语句在 phpMyAdmin(或 MySQL 命令行实用程序)中阅读此内容:

    SHOW VARIABLES LIKE 'open%'
    

    要将此变量设置为更大的数字,请编辑 /etc/my.cnf 文件并添加以下行:

    [mysqld]
    open_files_limit = 5000
    

    【讨论】:

    • /etc/my.cnf 文件在哪里?
    • 我运行这些 sql SHOW VARIABLES LIKE 'open%' => result= 6209
    【解决方案3】:

    This answer 解释了错误代码 24(位于错误消息的末尾)。

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多