2013-02-19 2 views
1

내 코드가 로컬에서 작동하지만 Heroku에서 실행하려고하면 작동하지 않습니다. heroku에서 db를 추가했지만 여전히 작동하지 않습니다. 이것이 일어나는 이유에 대한 단서가 있습니까?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가 로그 귀하의 구성 바르에서 나는 DATABASE_URL의 값을 상상

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

의 일부가 존재하지 않습니다. 이를 확인하려면 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에서 처음으로 push 할 때, 우리는 데이터베이스를 제공하고 필요할 때이를 알립니다 (예 : Gemfile에 pg gem이있는 레일 응용 프로그램). 그러나 heroku addons를 통해 데이터베이스를 만든 경우 : add, 직접 홍보해야합니다. – hgmnz

관련 문제