あとは普通に INSTALLED_APPS の models.py を書いて syncdb すればいけるだろうと思い早速やってみたのだが、ログインフォームでIDとパスワードを入力してアクセスしたところ以下のようなエラーになってしまった・・・。
OperationalError at /admin/
attempt to write a readonly database
パーミッションの問題かなと思いつつググってみると、「データベースファイルのパーミッション変えたら解決しました」って書いてあるので案の定そうだったらしい。
http://stackoverflow.com/questions/17641993/operationalerror-attempt-to-write-a-readonly-database-in-ubuntu-server
つまり書き込み権限がないとのことなので、chmod +w your.sqlite3
でOK。
ところでUNIXのパーミッションは「1」「2」「4」の合計値で「書き込み」「読み込み」「実行」権限を表すということは何となく覚えていたのだが、どの数値がどの権限を表すのかちゃんと覚えていなかったことに気付いた。いい機会なのでググって勉強。
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3
ls -l your.sqlite3
で見てみると自分のデータベースファイルは
-rw-r--r--
がデフォルトのパーミッションらしかった。数字で表すと 644 。それぞれの数字は左から「ユーザー」「グループ」「その他」を意味しているのでユーザーしか書き込みできない設定になっていたようだ。
では「グループ」と「その他」、どちらに書き込み権限を与えればいいのだろうかと思い、試した。まずは「グループ」のみに権限を付与。
chmod 664 your.sqlite3
結果、何も変わらない。
ということで今度は「その他」のみに権限を付与(この場合は 646 となる)。
OperationalError at /admin/
unable to open database file
メッセージが変わった。どうやら「その他」ユーザーとしてアクセスしているようだ(よくよく考えたら当たり前)。
データベースファイルが開けない・・・ということは今度は実行権限だ と思い、ひとまず 777 にしてみた(細かく検証するのが面倒になってきたので)のだが変わらず、あれ?
調べているうちにこのページに当たり解決。
http://stackoverflow.com/questions/7670289/sqlite3-operationalerror-unable-to-open-database-file
どうやらプロジェクトのディレクトリに直接データベースファイルを置くのではなく、 db というディレクトリを作ってその中に入れておくと動くみたいだ。
で、この場合 どうやらyour.sqlite3のパーミッションはデフォルトのままでもOKで、dbディレクトリの方のパーミッションをいじらないと駄目だったらしい 。
「その他」ユーザーが 7 になっていればひとまずは大丈夫っぽい(まあ潔く777でいいと思うが)。
ログイン成功。それにしてもけっこう苦戦するなあ・・・。