問題:
SQLite データベースを Heroku で動作させるのに問題があります。ブラウザでアプリの URL にアクセスしようとすると、内部サーバー エラーが発生します。heroku logs
これを示します:
OperationalError: (sqlite3.OperationalError) no such table: questions [SQL: u'SELECT questions.id AS questions_id, questions.title AS questions_title, questions.content AS questions_content \nFROM questions']
私が試したこと:
ローカル データベースを削除することで、このエラーをローカルで再現できます (まだ重要なものはありません)。
$ rm data-dev.sqlite
$ heroku local
# Go to localhost:5000 in my browser, 500 Internal server error
OperationalError: (sqlite3.OperationalError) no such table: questions [SQL: u'SELECT questions.id AS questions_id, questions.title AS questions_title, questions.content AS questions_content \nFROM questions']
upgrade
Flask-Migrate のコマンドを使用して、ローカルで修正できます。
$ python2 manage.py db upgrade
$ heroku local
# Go to localhost:5000, get a working website
ただし、同じことを行って Heroku で修正しようとすると、機能しません。
$ heroku run ls
# Doesn't show any .sqlite database files
$ heroku run python manage.py db upgrade
# Go to the website URL, get 500 Internal server error
$ heroku logs
OperationalError: (sqlite3.OperationalError) no such table: questions [SQL: u'SELECT questions.id AS questions_id, questions.title AS questions_title, questions.content AS questions_content \nFROM questions']
また、手動でテーブルを削除して作成しようとしました:
$ heroku run python manage.py shell
>>> db.drop_all()
>>> db.create_all()
>>> quit()
# Go to website URL, get 500 Internal server error
$ heroku logs
OperationalError: (sqlite3.OperationalError) no such table: questions [SQL: u'SELECT questions.id AS questions_id, questions.title AS questions_title, questions.content AS questions_content \nFROM questions']
どうしようかかなり困っています。Flask-Migrate が何らかの理由でデータベース ファイルを作成していないようです。で試しopen('textfile.txt', 'w')
たところmanage.py
、ファイルが正常に作成されました。