Re: 管理画面から「ファイル」のページを操作できなくなりました。

2019年6月26日 at 19:12

僕が故意に僕のローカルで同じ発生させたエラーの復旧方法についてわかりました。

僕の方で、MySQL に直接入って、ファイルに関する MySQL 内のデータを順番に削除していき、ファイルマネージャーでエラーを発生させる箇所と、エラー表示回避を解除する箇所をみつけました。

ただ、この方法は、ファイルマネージャーのエラー表示を回避するだけで、完全な復旧方法ではありません。


concrete5 では、1個のファイルがアップロードされると


- Files
- Fileと名前がつけられているテーブルすべて
- atNumber
- at** (ファイルに属性が追加されている場合)
- AttributeValues
- TreeFileNodes
= TreeNodes

などの10個以上のテーブルにそのファイルの情報が追加されます。

ファイルを削除中、もしくは、手動で1個のファイルを削除しようとすると、
- FileVersions や Files テーブルで削除したいファイルの fID を取得
- TreeFilesNodes テーブルで該当fIDに割り当てられている treeNodeID を取得
- FileVersion テーブルで該当 fID のレコードを削除
- File テーブルで該当 fID のレコードを削除
(ここで、ファイルマネージャーで該当の「Invalid argument supplied for foreach()」エラーがファイルマネージャーで発生)
- TreeNodes テーブルで、さきほど取得した treeNodeID を削除

これで、ファイルマネージャー上からはファイルが消え、エラー無しでファイルマネージャーにアップロードできるようになります。

ただ、最初にお伝えしたように、ファイルの情報はいくつものテーブルに情報が記録されているため、今後、サイトをアップグレードする際に正常にアップグレードできないなどのエラーが発生する可能性があるため、該当するファイルの情報をすべての箇所から削除する必要があるのですが、ファイル属性は fID だけではなく、属性ID (akID) を取得して該当する属性情報を削除する必要があったりします。

さきほどもお伝えしたとおり、バックアップがあれば、バックアップから復旧してサイト運営をされることをおすすめします。

よろしくおねがいします。

タグ:

Re: 管理画面から「ファイル」のページを操作できなくなりました。

2019年7月1日 at 16:40
返信が遅くなりすみません。

私の方では対処できないため
その後は、ご助言頂いた方法をデータベースの知識のある方に試して頂きました。
残念ながらエラーを消すには至りませんでした。

また、バックアップをとっていなかったため、改めて作り直していくことになりました。

お時間を割いてまで調べて頂き、本当にありがとうございました。