2013-02-19 3 views
1

Мой код работает локально, но когда я пытаюсь запустить его на Heroku, он не работает. Я добавил db на 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

+0

heroku env ouputs 'env' не является командой heroku. heroku env выводит синтаксическую ошибку около неожиданного токена 'newline ' – GangstaGraham

+0

То, что я имел в виду, было' heroku config'. (извините) – derekv

ответ

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

+0

Извините, у меня недостаточно репутации, чтобы дать вам право голоса, но я дал вам галочку (подсказка: проголосуйте за вопрос, чтобы я мог проголосовать за этот ответ быстрее: P) – GangstaGraham

+0

вам нужно продвигать его, чтобы DATABASE_URL указывает на то, что ваше приложение может забрать и использовать. Для меня это автоматически не продвигалось по неизвестным причинам, но симптомов было достаточно, чтобы указать вам в правильном направлении. В heroku, при первом нажатии, мы предоставляем базу данных и продвигаем ее, если обнаружим, что вам нужно это (например: приложение rails с pg gem в Gemfile). Но если вы создали базу данных через аддоны герою: добавьте, вам нужно продвигать ее самостоятельно. – hgmnz

Смежные вопросы