Django学習メモ⑦
DjangoのHerokuデプロイでハマったところ
500エラが出たので、一時的にsettings.pyのDEBUG設定をTrueにする。
となっていたので、migrateがうまく行っていない可能性。
sqlite3の仕様が原因
全く仕組みを知らず、MySQLやPostgreと同じようなものと思っていたが、 SQLiteは、サーバー型ではなく、データをファイル形式で保存するとのこと。 Heroku dynoのファイルシステムは永続的ではなく、dyno間の共有もないため、 migrateを実行すると、Herokuは新しいdynoを起動し、移行を実行してからdynoとデータベースを削除してしまうらしい。
解消方法
db.sqlite3(データファイル)をgit管理していなかったため、リモートリポジトリにpushされていなかった。 そこで.gitignoreを編集する。
<blog>
__pycache__
staticfiles
local_settings.py
db.sqlite3
*.py[co]
settings.json
からdb.sqlite3を削除
<blog>
__pycache__
staticfiles
local_settings.py
*.py[co]
settings.json
無事うまく動作した。
【補足1】sqliteのメリット・デメリット
- メリット
- クラウドサーバーを用いるとき、他者とDBサーバーを食い合わないため、高速
- データ型の概念がない
- デメリット
- パスワード設定がない
- 頻繁に不特定多数がデータベースに書き込むような処理は苦手
#【補足2】Heroku Dynoとは
参考にしたstack Overflow