ブラウザ上の操作で簡単にファイルの削除が可能、なはずのowncloudでとある時期からエラーが出て削除できないファイルが発生し始めました。
根本的な原因はよくわからないのですが、どうもファイルがデータベース上でロックされている模様。
FFFTPなどで実際のファイルを削除してみても、owncloud上にはファイル名が残り続けるという面倒な事態に。
対策としては、ロックを制御だか記憶だかしているファイルを削除してしまえば良いとのことです。
これはNextcloudでもおそらく一緒。
ただし、個人利用の場合はサクッと消しちゃっても問題無さそうですが複数人で管理しているような場合はご注意を。
本来は消してはいけないものをロックするためのものだと思いますので。
手順
まず、owncloudをメンテナンスモードにします。
コマンドでもいけますが、owncloud/config内のconfig.phpの中身を書き換えるだけでもOK。
config.phpの22行目あたりにあるメンテナンスのfalseの部分を
config.php'maintenance' => false,
trueに書き換えて上書き保存。これだけです。
config.php'maintenance' => true,
次にデータベースにアクセスします。
mysql -u root -p
でログインして、
show databases;
でowncloudのデータベースを確認。MariaDB [(none)]>の部分は人によって異なります。
デフォルトのままなら「owncloud」というデータベースが存在すると思いますので、
use owncloud;
で選択。もしデータベース名が異なっていたら変更して下さい。
Database changed
となったら、
show tables;
でデータベースの中身を確認。この中に「oc_file_locks」が存在するはずです。
こいつを削除します。
delete from oc_file_locks;
と打って削除します。
Query OK, (ここは数字) rows affected (0.15 sec)
OKが出たら成功。quitでデータベースから出ます。
quit
Bye
最後にowncloudのメンテナンスモードを解除します。
始めの逆で、trueをfalseにして上書き保存します。
まとめ
メンテナンスを解除したら、ブラウザでの再アクセスまで数分待ったほうが良いと思います。
その間にowncloudがファイルを読み直してくれるはず。
せっかちにアクセスすると、また違うエラーに巻き込まれるかもしれません。
一度覚えたら次からは名前を確認する必要は無いので、
- その1メンテナンスモードにする
- その2mysql -u root -pでログイン
- その3use owncloud;でデータベースを選んで
- その4delete from oc_file_locks;で削除
- その5quitで終了という流れでOKです。
メモリ関係の設定の問題なんでしょうかね。根本的に解決したいものです。