破損したAnkiデータの修復
2013-10-17 更新Ankiデータが、何らかの原因で不幸にして破損した場合の修復方法について紹介します。起動後に大量のデータ更新を行ったりして、自動バックアップからの復元では対応できない場合の手順を説明します。
注意: この作業はデスクトップPC上でのみ作業が可能です。また、コマンドラインツールの操作が必要となります。なお、モバイル機器での作業は対象外です。
コレクションデータの破損と確認
メニューバーから[ツール]>[データベースをチェック]を実行すると、データが破損していないか確認できます。
データの破損が発生した場合、一番簡単な復旧方法は最新の自動バックアップファイルから復旧することです。
Ankiは、アプリケーション終了時、ユーザープロファイル変更時に自動バックアップを行います。まずは、自動バックアップファイルの復元を試みて、問題発生の直前の状況と比較してみましょう。
この記事で紹介するデータ修復の手順は、最新の自動バックアップ以降に、大量のデータの読み込みを行った場合など、最新のデータと自動バックアップファイルの間に差が大きい場合に有効です。
Ankiは、プロファイル毎にコレクションファイルを作成します。データの破損が発生しているのはどのプロファイルか改めて確認してください。
修復作業の準備
-
プロファイルフォルダーの中にある
collection.anki2
のバックアップを取ってください。 このファイルが、修復対象のファイルです。 なお、プロファイルフォルダーは、Ankiフォルダーの中に、プロファイル名を使って作成しています。 -
つぎに
sqlite3
がインストール済みか確認してください。-
Mac OS Xの場合は、既定でインストール済みです。
-
Linuxの場合は、パッケージ管理システムを使ってインストール済みか確かめることができます。
-
Windowsの場合は、SQLite サイトからWindows用の最新のコマンドラインシェル(command-line shell)をダウンロードします。 2013/10/16時点で、最新版はsqlite-shell-win32-x86-3080002.zipです。なお、Ankiユーザーマニュアルでは、sqlite-3_6_23.zipを指定しています。
-
コレクションファイルのダンプ
SQLite3のコマンドラインシェルを使って、コレクションのダンプファイルを作ります。作業に使用するプラットフォームによって手順が異なりますのでご注意ください。
Mac OS X または Linuxの場合
ターミナルを開き、Ankiフォルダーの中のプロファイルフォルダーに移動して次のコマンドを実行します。
sqlite3 collection.anki2 .dump > dump.txt
生成したファイル dump.txt
をテキストエディタで開きます。
最終行に "rollback;" という記述があれば、"commit;" に変更します。
さらに、ターミナルで次のコマンドを実行します。
cat dump.txt | sqlite3 temp.file
注意: コレクションファイルを上書きせず、必ず temp.file
とテンポラリーファイルを指定してください。
Windowsの場合
-
ダウンロードしたSqliteファイルを解凍すると、
sqlite3.exe
が生成します。これをAnkiフォルダーの中のプロファイルフォルダーにコピーします。 -
コマンドプロンプトを起動して次のコマンドを実行します。
コマンドプロンプトを開くには、[スタート]ボタンを押し、[プログラムとファイルの検索]フィールドに
cmd
と入力して、cmd.exe
を実行します。
sqlite3 collection.anki2 .dump > dump.txt
生成したファイル dump.txt
をテキストエディタで開きます。
最終行に "rollback;" という記述があれば、"commit;" に変更します。
さらに、ターミナルで次のコマンドを実行します。
cat dump.txt | sqlite3 temp.file
注意: コレクションファイルを上書きせず、必ず temp.file
とテンポラリーファイルを指定してください。
Ankiに読み込む
- ダンプファイル作成時にエラーメッセージを表示しないこと、ダンプファイルが空でないことを確認します。
-
コレクションファイル
collection.anki2
を別の名前に変更し、ダンプファイルtemp.file
をcollection.anki2
に変更します。 - Ankiを起動し、ツールバーから[ツール]>[データベースをチェック]を実行します。
問題がなければ修復作業は成功です。
更新情報
2013/10/16: Anki 2.0.14のリリースと同時に行われたマニュアルの変更に基づいて、内容を更新しました。
2013/7/6: 初出