错误代码:23打开文件时资源不足

时间:2015-07-27 05:45:33

标签: mysql

当我在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

如何解决这个问题?

3 个答案:

答案 0 :(得分:10)

mysql错误:打开文件时资源不足...(错误代码:24)表示已超出允许打开msyql的文件数。

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

SHOW VARIABLES LIKE 'open%'

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

[mysqld]
open_files_limit = 5000

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您(像我一样)通过对35k行数据运行单个插入查询来进行一些hacky服务器维护,那么提升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

请注意,我建议像这样运行这样的语句;我的工作很快,很脏,忽视了适当的清洁和连接管理。