2013-02-19 85 views
1

我的代码本地工作,但是当我尝试在Heroku上运行它,它不干活添加在Heroku上一分贝,但它仍然是行不通的。任何线索为什么发生这种情况?Heroku的应用程序崩溃由于数据库

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) 

我的一些Heroku的日志

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() 
+0

什么是heroku env输出? – derekv 2013-02-19 22:42:01

+0

heroku env输出'env'不是一个heroku命令。 heroku env输出语法错误附近意外的标记'新行” – GangstaGraham 2013-02-19 23:00:15

+0

我的意思是'的Heroku config'。 (抱歉) – derekv 2013-02-19 23:03:44

回答

1

我想象的DATABASE_URL值在你的配置瓦尔是不存在的。您可以通过heroku config:get DATABASE_URL --app your-app

尝试heroku pg:info --app your-app验证这一点,找出你所安装的数据库。确保你的数据库也是DATABASE_URL(它也会出现在pg:info的输出中)。如果不是,只需运行heroku pg:promote HEROKU_POSTGRESQL_<color> --app your-app并再次尝试脚本。

+0

非常感谢。我不得不推动它的工作。你知道我为什么需要推广它吗?我只是好奇,因为它不应该从一开始就工作。 – GangstaGraham 2013-02-20 06:40:50

+0

对不起,我没有足够的信誉来给你投票了,但我给你一个对号(提示:投了这个问题,让我可以更快地投了这样的回答:P) – GangstaGraham 2013-02-20 06:41:54

+0

你需要推广它,这样DATABASE_URL指向你的应用可以拿起并使用的东西。对于我来说,它不会自动升级,但是症状足以让您指向正确的方向。在heroku上,首先我们提供一个数据库,如果我们检测到您需要一个数据库(例如:一个在Gemfile中包含pg gem的rails应用程序),就会将其提升。但是,如果你通过heroku插件创建数据库:添加,你需要自己提升它。 – hgmnz 2013-02-21 01:18:12

相关问题