9

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)

誰でもこの問題を解決するのを手伝ってもらえますか?

ありがとうございました。

4

1 に答える 1

18

ここから、ここから。

errno: 24 は、特定のプロセスで開かれているファイルが多すぎることを意味します。「open_files_limit」と呼ばれる読み取り専用の mysql 変数があり、mysqld で許可されているオープン ファイルの数を示します。

SHOW VARIABLES LIKE 'open%';

多くのシステムでは、これを 1024 などの非常に低い値に設定しています。残念ながら、次の方法は機能しません。

SET open_files_limit=100000

MySQL は次のように応答します。

エラー 1238 (HY000): 変数 'open_files_limit' は読み取り専用の変数です

ただし、/etc/my.cnf を変更することは可能です。このファイルは存在しない可能性があります。存在しない場合は作成してください。次の内容が含まれていることを確認してください。

[mysqld]

open-files-limit = 100000

次に、必ず mysql を再起動してください。

sudo /etc/init.d/mysql 再起動

ここで、SHOW VARIABLES LIKE 'open%' は 100000 を表示するはずです。使用する数値は異なる場合があります。

于 2012-07-09T07:00:29.803 に答える