Owncloudでファイルが削除できなくなった時の対処方法

VPS
この投稿は最終更新から5年以上経過しているため、内容が古くなっている可能性があります。

ブラウザ上の操作で簡単にファイルの削除が可能、なはずの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のメンテナンスモードを解除します。
始めの逆で、truefalseにして上書き保存します。

まとめ

メンテナンスを解除したら、ブラウザでの再アクセスまで数分待ったほうが良いと思います。
その間にowncloudがファイルを読み直してくれるはず。

せっかちにアクセスすると、また違うエラーに巻き込まれるかもしれません。

一度覚えたら次からは名前を確認する必要は無いので、

一連の流れ
  • その1
    メンテナンスモードにする
  • その2
    mysql -u root -pでログイン
  • その3
    use owncloud;でデータベースを選んで
  • その4
    delete from oc_file_locks;で削除
  • その5
    quitで終了という流れでOKです。

メモリ関係の設定の問題なんでしょうかね。根本的に解決したいものです。