2012-07-09 27 views
9

私はMyISAMストレージエンジンでmysqlのテーブルを持っています。 私はこのために私は、クエリを実行しています、特定のテーブルの上にパーティションを作成したい -#1016 - ファイルを開くことができません: './database_name/#sql-38f_36aa.frm'(エラー番号:24)

「stop_id」はvarchar型のタイプである
alter table Stops PARTITION BY KEY(`stop_id`) PARTITIONS 200 

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

は、誰もがこの問題を解決するために私を助けてください - 上記のクエリを実行している間、私はエラーを取得していますか?

ありがとうございます。

答えて

17

hereおよびhere

errno:24は、指定されたプロセスに対して開いているファイルが多すぎることを意味します。 は、mysqldので許可されているどのように多くの開いているファイルが表示されますことを「open_files_limit」と呼ばれる読み取り専用のmysqlの変数があります:残念ながら1024 のような非常に低いものにこれを設定

SHOW VARIABLES LIKE 'open%'; 

多くのシステムでは、以下は動作しません:

ERROR 1238(HY000):変数「open_files_limit

SETのopen_files_limit = 100000

MySQLがで応答します'は読み取り専用です 変数

ただし、/etc/my.cnfを変更することはできます。このファイルはありません。 が存在しない場合は作成してください。 MySQLを再起動してください、そして、

[mysqldを]

open-files-limit = 100000 

sudoは今

を再起動/etc/init.d/mysqlそれは、次の 内容を持っていることを確認してください、SHOW VARIABLES LIKE 'open%'は100000と表示されます。 の数字は異なる場合があります。

+0

ありがとう、Jacob、それは私を大いに助けます。 – Deepu

+2

Debianの場合、ファイルは '/ etc/mysql/my.cnf'にあり、変数' open_files_limit'はありません。 '[mysqld]'セクションの下に追加するだけです。 – Mike

+0

私のUbuntu 12.04 LTSと同じです。ファイルは '/ etc/mysql/my.cnf'にあり、' open_files_limit'はありません。 –

関連する問題