Webアプリケーションの1つで次のエラーが発生しました-
Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)
任意のアイデア-これは私のサーバー上のハードディスクスペースの問題ですか?
perror
コマンド を使用します。
$ perror 28
OS error code 28: No space left on device
システムでエラーコードが異なる場合を除き、ファイルシステムはいっぱいです。
同様の問題が発生しましたが、問題はMySQLが必要に応じて/ tmpディレクトリを使用したことです(デフォルトの構成です)。また、/ tmpは独自のパーティションに配置されており、大きなMySQLリクエストに対してスペースが少なすぎました。
詳細については、この回答をご覧ください: https://stackoverflow.com/a/3716778/994302
私は同じ問題を抱えていましたが、ディスク容量は大丈夫でした(40%のみ満杯です)。問題はiノードで、小さなファイルが多すぎて、iノードがいっぱいでした。
Iノードのステータスはdf -iで確認できます
このエラーは、MySQLに必要な一時ファイルを作成するのに十分なスペースがないことを意味します。
最初に試すことができるのは、/tmp/
パーティションのサイズを拡張することです。 LVMの場合は、lvextend
コマンドを確認してください。
パーティション/tmp/
のサイズを大きくできない場合は、MySQL構成で作業できます。my.cnf
(通常は/etc/mysql/my.cnf
)ファイルを編集しこの行の場合:
tmpdir = /tmp/
必要に応じて変更します(例/var/tmp/
)。必ずスペースを確保し、新しいディレクトリのmysqlユーザーに書き込み権限を割り当ててください。
お役に立てれば!
次のコードを実行します。
du -sh/var/log/mysql
おそらくmysqlバイナリログがメモリをいっぱいにした可能性があります。その場合は、古いログの削除に従ってサーバーを再起動します。 my.cnfにも追加します。
expire_logs_days = 3
これと同じエラーが発生しましたが、問題は単に仮想マシンのスペースが十分ではなかったことです。いくつかの不要なファイルを削除し、再び機能し始めました。
私のメモリ/ディスクスペースの割り当ては次のように見えました
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 37G 37G 127M 100% /
...
Xamppユーザーの場合:私の経験では、問題は「mysql」フォルダーにある「0」という名前のファイルが原因でした。サイズはとてつもなく大きかった(約256 GBに爆発した)。その除去は問題を修正しました。
今日。私は同じ問題を抱えています...私の解決策:
1)inodeを確認:df -i
私が見た:
root@vm22433:/etc/mysql# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 452 127062 1% /run
/dev/vda1 1969920 1969920 0 100% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002
2)どのフォルダが最大数のinodを使用しているかを調べ始めました:
for i in /*; do echo $i; find $i |wc -l; done
すぐに/ home/tomnolane/tmpフォルダーに見つかりました。これには膨大な数のファイルが含まれていました。
3)/ home/tomnolane/tmpフォルダーPROFITを削除しました。
4)チェック済み:
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 454 127060 1% /run
/dev/vda1 1969920 450857 1519063 23% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002
大丈夫です。
5)restart mysql service
-大丈夫!!!!
このエラーは、パーティションに十分なスペースがない場合に発生します。通常、MYSQLはLinuxサーバーで/ tmpを使用します。これは、ルックアップが大量のデータを返していたり、大量のデータをふるいにかけて大きな一時ファイルを作成したりしたために、一部のクエリで発生する可能性があります。
/etc/mysql/my.cnfを編集します
tmpdir =/your/new/dir
例えば
tmpdir =/var/tmp
通常は独自のパーティションにある/ tmpよりも多くのスペースを割り当ててください。
もう一方が機能しない場合は、次の行を使用して試すこともできます。
du -sh/var/lib/mysql/database_Name
また、ホストに確認して、データベースの許容サイズを確認することもできます。