Heroku的应用程序崩溃,因为数据库 [英] Heroku Application Crashes Because of Database

查看:145
本文介绍了Heroku的应用程序崩溃,因为数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码在本地工作,但是当我尝试在Heroku上运行它时,它不工作。我已经在heroku上添加了一个数据库,但它仍然无法工作。任何线索,为什么发生这种情况?

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆