13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(メモ)Vagrant環境でDjango 〜 SQLite3データベースの適用まで

Last updated at Posted at 2014-04-10

おなじみのadminページが表示できるようになりました。

あとは普通に INSTALLED_APPSmodels.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でいいと思うが)。

ログイン成功。それにしてもけっこう苦戦するなあ・・・。

13
9
4

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
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?