#1016 - 无法打开文件:'./ database_name/#sql -38f_36aa.frm'(错误号码:24)

Dee*_*epu 9 mysql partitioning

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

alter table Stops PARTITION BY KEY(`stop_id`) PARTITIONS 200
Run Code Online (Sandbox Code Playgroud)

其中'stop_id'是varchar的类型.执行上述查询时,我收到错误 -

#1016 - Can't open file: './database_name/#sql-38f_36aa.frm' (errno: 24)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

谢谢.

Jac*_*cob 18

这里这里.

errno:24表示为给定进程打开的文件太多.有一个名为'open_files_limit'的只读mysql变量,它将显示mysqld允许的打开文件数:

SHOW VARIABLES LIKE 'open%';
Run Code Online (Sandbox Code Playgroud)

许多系统将此设置为非常低的值,例如1024.不幸的是,以下内容不起作用:

SET open_files_limit = 100000

MySQL将回复:

ERROR 1238(HY000):变量'open_files_limit'是只读变量

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

的[mysqld]

open-files-limit = 100000
Run Code Online (Sandbox Code Playgroud)

然后,一定要重启mysql:

sudo /etc/init.d/mysql restart

现在,SHOW VARIABLES LIKE'open%'应显示100000.您使用的数字可能不同.

  • 注意,对于Debian,文件位于`/ etc/mysql/my.cnf`,变量`open_files_limit`不在那里.只需将它添加到`[mysqld]`部分下面. (2认同)