9

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

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)

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

谢谢你。

4

1 回答 1

18

这里这里

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

SHOW VARIABLES LIKE 'open%';

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

设置 open_files_limit=100000

MySQL 将响应:

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

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

[mysqld]

open-files-limit = 100000

然后,一定要重启mysql:

须藤 /etc/init.d/mysql 重启

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

于 2012-07-09T07:00:29.803 回答