MySQLの「Can’t create/write to file ‘/tmp/#sql****.MYI’」エラーを解決する!
「急いで解決法を教えてくれ!」という人がほとんどでしょうから、まずは結論から。
/tmp/ ディレクトリ内を圧迫している余計なファイルをすぐに削除してください!
特にサイズが大きい画像ファイルなどがあればすぐに!
終わりましたか? まだ直らない? では今度は以下の手順を踏んでみてください。
- 1. /home/ に tmp ディレクトリを作成。
- 2.tmp ディレクトリのパーミッションを「777」に。
- 3./etc/my.cnf を編集。
- 4.tmpdir = /home/tmp の記述を追加。
- 5.MySQLサーバを再起動。
しばらく動いたけど、また同じエラー? では…
今度はサーバー内にどんどん増えていってるファイル、あるいは既にたくさんある余分なファイルを削除してください!
/tmp/ の容量制限とi-nodeの制限
解決したでしょうか? 一安心。。
どういうことが起こったかというと、MySQLが処理のために一時的にファイルを作成できなくなったことによるエラーなんですね。
MySQLでは特に指定していなければ、一時ディレクトリを「/tmp/」に設定します。 ここの容量制限に引っかかってしまうとエラーが起こります。
もう一つは、ディスク内にファイルを作成できる上限数に達してしまうことが考えられます。 この場合はdfコマンドに「hi」オプションを付けて実行することでinode数を確認できます。
# df -hi Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vzfs 245K 245K 0 100% / none 128K 97 128K 1% /dev
これを見ると、245,000ファイルの上限に達してしまって、これ以上ファイルを作成できないことが分かります。 こうなるとMySQLだけの問題ではなく、サーバーログが残せないなど、あらゆるところに不具合が出る恐れがあります。
あまりファイルを作りすぎるプログラムを書かないように注意しましょうね!
MySQL徹底入門 第4版 MySQL 8.0対応
¥3,762 (2025-04-26 09:00 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)MySQL徹底入門 第5版 MySQL 8.4 LTS対応
¥4,620 (2025-04-21 05:28 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)MySQL運用・管理[実践]入門 〜安全かつ高速にデータを扱う内部構造・動作原理を学ぶ
¥3,018 (2025-04-26 16:28 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)2011-04-13