Heroku的应用程序崩溃,因为数据库 [英] Heroku Application Crashes Because of Database
问题描述
import sys
导入os
$ b $从烧瓶导入烧瓶,render_template
from flask.ext.sqlalchemy导入SQLAlchemy
db_local = #it工程,只是在这里没有显示
app =烧瓶(__ name__)
app.config ['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL',db_local)
app.secret_key =''#这是秘密的原因
db = SQLAlchemy(app)
从视图导入*
从模型导入*
db.create_all()
if __name__ =='__main__ ':
port = int(os.environ.get('PORT',5000))
app.run(host ='0.0.0.0',port = port,debug = True)
我的一些heroku日志
2013-02-19T22:29:59 + 00:00 app [web.1]:文件app.py,第23行,放在< module>
2013-02-19T22:29:59 + 00:00 app [web.1]:from views import *
2013-02-19T22:29:59 + 00:00 app [web.1 ]:文件/app/views.py,第1行,在< module>
2013-02-19T22:29:59 + 00:00 app [web.1]:from app import db
2013-02-19T22:29:59 + 00:00 app [web.1 ]:文件/app/app.py,第25行,在< module>
2013-02-19T22:29:59 + 00:00 app [web.1]:db.create_all()
2013-02-19T22:29:59 + 00:00 app [web。 1]:self._execute_for_all_tables(app,bind,'create_all')
2013-02-19T22:29:59 + 00:00 app [web.1]:File/app/.heroku/python/lib /python2.7/site-packages/flask_sqlalchemy.py,第822行,在create_all
2013-02-19T22:29:59 + 00:00 app [web.1]:File/app/.heroku /python/lib/python2.7/site-packages/flask_sqlalchemy.py,第814行,在_execute_for_all_tables
2013-02-19T22:29:59 + 00:00 app [web.1]:File/ app / .heroku / python / lib / python2.7 / site-packages / sqlalchemy / schema.py,第2564行,在create_all
2013-02-19T22:29:59 + 00:00 app [web。 1]:import utils
2013-02-19T22:29:59 + 00:00 app [web.1]:文件/app/utils.py,第1行,位于< module>
2013-02-19T22:29:59 + 00:00 app [web.1]:回溯(最近一次通话最后):
2013-02-19T22:29:59 + 00:00 app [web.1]:conn = self.contextual_connect(close_with_result = False)
2013-02-19T22:29:59 + 00:00 app [web.1]:File/app/.heroku/python/ lib / python2.7 / site-packages / sqlalchemy / engine / base.py,第2490行,在contextual_connect
2013-02-19T22:29:59 + 00:00 app [web.1]:self。 pool.connect(),
2013-02-19T22:29:59 + 00:00 app [web.1]:tables = tables)
2013-02-19T22:29:59 + 00: 00 app [web.1]:con = self._create_connection()
我想你的config vars中的 DATABASE_URL
的值不存在。您可以通过来验证这一点。heroku config:get DATABASE_URL --app your-app
尝试 heroku pg:info --app your-app
来找出你已经安装的数据库。确保你的数据库也是DATABASE_URL(它也会出现在 pg:info
的输出中)。如果不是,只需运行 heroku pg:宣传HEROKU_POSTGRESQL_< color> --app your-app
并再次尝试脚本。
My code works locally, but when I try running it on Heroku it does not work.I have added a db on heroku, but it still won't work. Any clues to why this happens?
import sys
import os
from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
db_local = #it works, just not shown here
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', db_local)
app.secret_key = ' ' #it's a secret for a reason
db = SQLAlchemy(app)
from views import *
from model import *
db.create_all()
if __name__ == '__main__':
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port, debug=True)
Some of my heroku logs
2013-02-19T22:29:59+00:00 app[web.1]: File "app.py", line 23, in <module>
2013-02-19T22:29:59+00:00 app[web.1]: from views import *
2013-02-19T22:29:59+00:00 app[web.1]: File "/app/views.py", line 1, in <module>
2013-02-19T22:29:59+00:00 app[web.1]: from app import db
2013-02-19T22:29:59+00:00 app[web.1]: File "/app/app.py", line 25, in <module>
2013-02-19T22:29:59+00:00 app[web.1]: db.create_all()
2013-02-19T22:29:59+00:00 app[web.1]: self._execute_for_all_tables(app, bind, 'create_all')
2013-02-19T22:29:59+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask_sqlalchemy.py", line 822, in create_all
2013-02-19T22:29:59+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/flask_sqlalchemy.py", line 814, in _execute_for_all_tables
2013-02-19T22:29:59+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/sqlalchemy/schema.py", line 2564, in create_all
2013-02-19T22:29:59+00:00 app[web.1]: import utils
2013-02-19T22:29:59+00:00 app[web.1]: File "/app/utils.py", line 1, in <module>
2013-02-19T22:29:59+00:00 app[web.1]: Traceback (most recent call last):
2013-02-19T22:29:59+00:00 app[web.1]: conn = self.contextual_connect(close_with_result=False)
2013-02-19T22:29:59+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 2490, in contextual_connect
2013-02-19T22:29:59+00:00 app[web.1]: self.pool.connect(),
2013-02-19T22:29:59+00:00 app[web.1]: tables=tables)
2013-02-19T22:29:59+00:00 app[web.1]: con = self._create_connection()
I imagine the value of DATABASE_URL
in your config vars does not exist. You can verify this via heroku config:get DATABASE_URL --app your-app
Try heroku pg:info --app your-app
to find out what databases you have installed. Make sure your database is also DATABASE_URL (it would also show up in the output of pg:info
). If it's not, just run heroku pg:promote HEROKU_POSTGRESQL_<color> --app your-app
and try your script again.
这篇关于Heroku的应用程序崩溃,因为数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!