Mysql #1016-Can';t打开文件:'/数据库名称/#sql-38f#u 36aa.frm';(错误编号:24)

Mysql #1016-Can';t打开文件:'/数据库名称/#sql-38f#u 36aa.frm';(错误编号:24),mysql,partitioning,Mysql,Partitioning,我用MyISAM存储引擎在mysql中创建了一个表。 我想在一个特定的表上创建分区,为此我正在执行查询- alter table Stops PARTITION BY KEY(`stop_id`) PARTITIONS 200 其中“stop_id”是varchar的类型。在执行上述查询时,我得到一个错误- #1016 - Can't open file: './database_name/#sql-38f_36aa.frm' (errno: 24) 谁能帮我解决这个问题 谢谢。来自和 er

我用MyISAM存储引擎在mysql中创建了一个表。 我想在一个特定的表上创建分区,为此我正在执行查询-

alter table Stops PARTITION BY KEY(`stop_id`) PARTITIONS 200
其中“stop_id”是varchar的类型。在执行上述查询时,我得到一个错误-

#1016 - Can't open file: './database_name/#sql-38f_36aa.frm' (errno: 24)
谁能帮我解决这个问题

谢谢。

来自和

errno:24表示为给定进程打开的文件太多。 有一个名为“open\u files\u limit”的只读mysql变量 将显示mysqld允许打开的文件数:

SHOW VARIABLES LIKE 'open%';
很多系统将其设置为非常低的值,比如1024。 不幸的是,以下措施行不通:

设置打开的\u文件\u限制=100000

MySQL将响应:

错误1238(HY000):变量“open\u files\u limit”是只读的 变数

但是,可以对/etc/my.cnf进行更改。此文件可能 不存在,如果不存在,就创建它。确保它具有以下内容 内容:

[mysqld]

open-files-limit = 100000
然后,请确保重新启动mysql:

sudo/etc/init.d/mysql重启

现在,像“open%”这样的显示变量应该显示100000。你要的号码是多少 用途可能不同


谢谢Jacob,它帮助了我。注意,对于Debian,文件位于
/etc/mysql/my.cnf
,变量
open\u files\u limit
不在那里。只需将它添加到
[mysqld]
部分下面。我的Ubuntu 12.04 LTS也是如此。文件位于
/etc/mysql/my.cnf
中,并且
打开的\u文件\u限制
不在那里。
[mysqld]
部分添加打开的\u文件\u限制=100000
无效<代码>显示变量,如“打开%”仍然显示
1024
@Styopchik您实际上必须使用
open files limit=10000
才能在cnf文件中工作,请注意连字符而不是下划线