どうも、nippa です。
SQLite3 のファイルを扱っていたときに、ファイルが破損してアクセスできなくなってし まいました。
データベースアクセス時に、ファイルを外部から操作した場合などに起きます。
今回、破損ファイルの修復を方法をまとめておきます。
環境
- macOS 13.3
- SQLite3 3.31.1
sqlite3 のファイル破損時のエラー
破損した SQLite3 ファイルにアクセスしてみます。
# データベースへアクセス sqlit3 [sqlite database] # select select * from [table]; Runtime error: database disk image is malformed (11)
python からアクセスすると、sqlite3 のドライバから以下のようなエラー文が発生しま す。
sqlite3.DatabaseError: database disk image is malformed
破損ファイルの修復・復旧
.recover コマンドで修復
sqlite3 [sqlite database] '.recover' | sqlite3 [new sqlite database]
上記のコマンドでは、.recover
で破損したデータベースからのデータ回復を目指します
。
この機能は sqlite3 の 3.29.0 以降で導入された機能になります。
.dump コマンドでデータの救出
sqlite3 [sqlite database] '.dump' | sqlite3 [new sqlite database]
.dump
コマンドでは破損したファイルからできる限り、データを吐き出し、救出できま
す。
感想
今回、SQLite3 が破損したときにファイルの復旧方法をまとめました。
ファイルが破損しても、ある程度データを復旧したり、データを吐き出すことが可能です 。
大事なファイルの場合は、バックアップをしっかり取ることも重要ですので、そちらも検 討することが大事だと思います。
ではでは、また次回。