公開している Lokka の DB (MySQL) のデータを、手もとの Lokka の DB (SQLite) に取り込むときに毎回やり方を忘れるので書いておきます。
今回は MySQL to Sqlite converter という gist のコメント欄に書いてある以下の方法を試した。
sudo gem install sequel
sudo gem install sqlite3
sudo gem install mysql
rbenv rehash
sequel mysql://user:password@host/database -C sqlite://db.sqlite
これでデータを MySQL から SQLite に変換できた。Lokka をローカルで起動してアクセスしてみるが記事が表示されない。DB の中にはちゃんとデータが入ってるし、管理画面から記事一覧を表示するとちゃんと記事が表示される。どうも Post.published
が []
を返すみたい。
手でクエリを投げてみると
sqlite> select * from entries order by created_at desc limit 1;
id = 960
user_id = 1
category_id = 5
slug = eye-pro-is-shit
title = Eye-Fi Pro を買ったけどクソだった
body = [hitode909さんの日記](http://hitode909.hatenablog.com/entry/2013/05/24/093749 "hitode909の日記")を...
type = Post
draft = 0
created_at = 2013-10-06 07:28:00.000000
updated_at = 2013-10-06 13:11:23.000000
frozen_tag_list =
markup = redcarpet
draft = 0
なので表示されそうなもんなんだけど、よくよく調べてみると SQLite には Boolean 型がなくて、DataMapper は SQLite に Boolean 型のデータを保存するときは t
/f
の文字列で保存するみたい。これは盲点だった。
結局 draft = 0
を draft = 'f'
に変えてあげればすべての記事を表示できるようになった。