IT技術で仕事を減らしたい!

ITエンジニアのメモ+α

SQLite3 ファイルが破損したときの対処方

どうも、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 が破損したときにファイルの復旧方法をまとめました。

ファイルが破損しても、ある程度データを復旧したり、データを吐き出すことが可能です 。

大事なファイルの場合は、バックアップをしっかり取ることも重要ですので、そちらも検 討することが大事だと思います。

ではでは、また次回。