LoginSignup
0
0

More than 5 years have passed since last update.

Kobito が起動しなくなった場合の対処(読み込み中のままハング)

Last updated at Posted at 2017-08-21

TL;DR

色々切り分けてみたところ、最後に保存したデータが原因で Kobito が起動しなくなった場合、バックアップから復旧してみてください。

Kobitoの自動バックアップ先
$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/Backups
  1. 壊れたDBにあって、正常に起動する DB にないデータを SQLite3 の DB から直接コピー
  2. 正常に起動するDBで Kobito を起動し、新規作成アイテムにコピーを貼り付ける

TS;DR

Kobito を起動すると読み込み中のままハングしている場合、恐らく以下の切り分けをすでに試されていると思います。

  • アプリを再インストールをすると起動する(データは空)
  • バックアップした最後のデータを復旧させると NG
  • 1つ古いデータだと起動する(しかし、大事な直近のデータが消えたまま)

その上で、最後に編集したデータが原因でハングしていると思われる場合は、SQLite3 で保存されている Kobito のデータベースを直接編集してデータを復旧させます。

※ macOS(OSX) をベースに記事を書いていますが、Windows でも基本的に流れは同じだと思います。

Kobito のデータが保存されているパス(バックアップ/復元先のファイル)

~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/

以下はディレクトリ構造を treeコマンドで表示した例です。

Kobitoフォルダのディレクトリ構造
$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/
$ tree
.
├── Kobito.db
├── Kobito.db-shm
├── Kobito.db-wal
├── CSS
│   └── custom-style.css
│
└── Backups
    ├── Kobito 2.3.8 2018-05-07 175832.db-backup
    │   ├── Kobito.db
    │   ├── Kobito.db-shm
    │   └── Kobito.db-wal
    ├── Kobito 2.3.8 2018-05-08 210550.db-backup
    │   ├── Kobito.db
    │   ├── Kobito.db-shm
    │   └── Kobito.db-wal
    │
    (以下同文)

Kobito のバックアップ・ディレクトリ

~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/Backups

バックアップ・ディレクトリの構造
$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/
$ cd Backups
$ tree
.
├── Kobito 2.3.8 2018-05-07 175832.db-backup
│   ├── Kobito.db
│   ├── Kobito.db-shm
│   └── Kobito.db-wal
├── Kobito 2.3.8 2018-05-08 210550.db-backup
│   ├── Kobito.db
│   ├── Kobito.db-shm
│   └── Kobito.db-wal
│
(以下同文)
バックアップ・ディレクトリ名のフォーマット
Kobito x.x.x yyyy-yy-yy yyyyyy.db-backup

x = Kobito のバージョン
y = バックアップの日付

バックアップからの復元

バックアップ・ディレクトリ内の各日付ごとのディレクトリにある下記3つのファイルを差し替えると、バックアップから復元できます。

  • /Kobito.db
  • /Kobito-shm.db
  • /Kobito-wal.db

SQLite コマンドで DB 内を手動でデータ検索

$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito/
$ cd Backups
$ ls
$ cd "Kobito x.x.x yyyy-yy-yy yyyyyy.db-backup"
$ 
$ sqlite3 Kobito.db
sqlite> .help
<略>
sqlite> .version
SQLite 3.16.0 2016-11-04 19:09:39 0e5ffd9123d6d2d2b8f3701e8a73cc98a3a7ff5f
sqlite> .dumb %ZITEM%
<略>
sqlite> .quit

上記のようにコマンドラインを利用してもいいのですが該当データを探すのが大変です。やはり GUI で探しコピペした方が楽で間違いもないため SQLite 用の DB ブラウザ・アプリを利用します。(もちろんコマンドに慣れている方はコマンドで)

「DB Browser for SQLite」(Mac, Win, PortableApp版あり)
http://sqlitebrowser.org/

Kobito_DBBrowser.png

  1. 「DB Brower for SQLite」アプリを開き「Open Database」から壊れた方の DB(Kobito.db)を開く。
    Kobito のフォルダを Finder の「よく使う項目」に登録しておくと開くのが楽になります。
  2. 「Browse Data」タブを選び、ドロップダウンから「ZITEM」を選ぶと記事一覧が表示されます。
  3. 左側ペインの表で「ZRAW_BODY」列と「ZTITLE」列を見ながら復旧したいアイテムを探します。
  4. 選択すると右上のペインに内容が表示されるので、コピーしてどこかに避難しておきます。
  5. アプリを終了し、Kobito のDB(3つのファイル)を正常に起動するものに差し替えます。
  6. Kobito を起動し、新しいアイテムを作成後、先に避難したコピーデータを貼り付け、問題がありそうな箇所がないか確認して保存します。
  7. Kobito を再起動して問題がないようであれば、急ぎの作業を続けます。

検証環境

Kobito OS Hard
v.2.3.8 macOS Sierra
(OSX 10.12.6)
MacBookPro Early 2015, Mem 8GB
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0