0

問題:

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']

upgradeFlask-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、ファイルが正常に作成されました。

4

1 に答える 1

2

Heroku では sqlite を使用できません。これは、データベースをファイルとして保存するためですが、ファイルシステムは一時的であり、dyno 間で共有されません。heroku runコマンドの実行中だけ持続する新しい dyno をスピンアップします。そのため、データベースをローカルに作成し、すぐに新しいデータベースを含むすべてを破棄します。

Postgresql アドオンを使用する必要があります。

于 2016-03-25T17:33:29.753 に答える