Lightroomのカタログ(lrcat)が壊れてたのでsqliteツールで修復してみた話
カタログファイル開けられない…
メインPCのSSDがご臨終し、バックアップしているNASからいろいろファイルをニューPCに書き戻して、さてLightroomのカタログ確認するかーっと開いたら…
[Window Title]
確認
[Main Instruction]
カタログ “LRCatalog-2” LRCatalog-2 は書き込み不可で開けないため、Lightroom はこのカタログを使用できません。
[Content]
権限が正しくないか、別の Lightroom アプリケーションがこのカタログを使用している可能性があります。問題を修正するか、別のカタログを選択してください。
[別のカタログを選択] [再実行] [終了]
メインPCで普段使っているカタログだし、LR終了後に不定期にNASにrobocopyでバックアップしていたものだ。壊れてないはずやのに?!
なんでやねんっ!とwebで検索検索!っとしてもロックファイルを消せだの権限を確認しろなどと書いてある。
何度も確認したが問題ない。
lrcatってsqliteファイルだったのね
半日くらい別の作業と並行であれこれ見ていくとふとjornalファイルもあれば消せ、とかみた…あ、ひょっとしてlrcatってdbファイル?sqlite?と思ってDB Browser入れたら…
---------------------------
DB Browser for SQLite
---------------------------
Could not open database file.
Reason: database disk image is malformed
---------------------------
OK
---------------------------
!なるほどなんかDB壊れてるっぽいわ、ということで修復方法を調査。
修復方法
まずsqliteからコマンドラインツールsqlite-tools-win32-x86-****.zipを入手。
で、展開した実行ファイルをカタログファイルと同じ場所に持ってくる。
カタログファイルのある場所をコマンドプロンプトで開く。
sqliteでカタログを開いてダンプしてdump.txtに書き込む。
> sqlite3 LRCatalog-2.lrcat .dump > dump.txt
何度かチャレンジしてみても、dump.txtが0Byteだったら諦めよう。
このdump.txtはテキストファイルなのでエディタで開く。なお数GByte級ファイルとかだとテキストエディタによってはフリーズする。私はVSCodeで開きました。VSCode優秀。
最後の行までスクロールしてROLLBACKとなっていたら、この部分をCOMMITに変更して保存する。
/**** ERROR: (11) database disk image is malformed *****/
ROLLBACK; -- due to errors
↓ROLLBACKをCOMMITに変更して保存
/**** ERROR: (11) database disk image is malformed *****/
COMMIT; -- due to errors
新しいファイル(LRCatalog_new.lrcat)をsqlite3で開いて、dump.txtをreadする。
>sqlite3 LRCatalog_new.lrcat
sqlite> .read dump.txt
sqlite> .exit
LRCatalog_new.lrcatをLightroomで開いて、画像ファイルやらフォルダが読めらラッキー!
何度か同じ事を繰り返しても何も読み込めない場合はあきらめましょう…。
私の場合
ちなみに私のはこんな感じになりました(LRCatalog-2.lrcatが開けないファイル、修復後ファイルがLRCatalog-1.lrcat)
ぼやき
QAサイトとかで頓珍漢な回答してるのかなりノイジーやね(英語サイト、日本語サイト含めて)
adobeよ!メッセージの出し方!書き込み権限関係ないやんかっ!
Author And Source
この問題について(Lightroomのカタログ(lrcat)が壊れてたのでsqliteツールで修復してみた話), 我々は、より多くの情報をここで見つけました https://qiita.com/marksard/items/37de6118286cae9b8782著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .