2012-11-07 20 views
9

मैं Heroku पर एक काफी सरल बोतल + SQLAlchemy साइट को चलाने के लिए कोशिश कर रहा हूँ, लेकिन मुझे यकीन है कि कैसे मैं अपने डीबी स्थापित करने के लिए मेरी माइग्रेशन चलाने चाहिए नहीं कर रहा हूँ। जब मैं heroku run alembic upgrade head चलाने के लिए, मैं निम्नलिखित त्रुटि मिलती है:मैं हेरोोकू पर एलेम्बिक माइग्रेशन कैसे चलाऊं?

Running `alembic upgrade head` attached to terminal... up, run.1 
Traceback (most recent call last): 
    File "/app/.heroku/venv/bin/alembic", line 12, in <module> 
    load_entry_point('alembic==0.4.0', 'console_scripts', 'alembic')() 
    File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/config.py", line 255, in main 
    CommandLine(prog=prog).main(argv=argv) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/config.py", line 250, in main 
    self.run_cmd(cfg, options) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/config.py", line 241, in run_cmd 
    **dict((k, getattr(options, k)) for k in kwarg) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/command.py", line 124, in upgrade 
    script.run_env() 
    File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/script.py", line 191, in run_env 
    util.load_python_file(self.dir, 'env.py') 
    File "/app/.heroku/venv/lib/python2.7/site-packages/alembic/util.py", line 185, in load_python_file 
    module = imp.load_source(module_id, path, open(path, 'rb')) 
    File "alembic/env.py", line 80, in <module> 
    run_migrations_online() 
    File "alembic/env.py", line 63, in run_migrations_online 
    poolclass=pool.NullPool) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 349, in engine_from_config 
    return create_engine(url, **opts) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 330, in create_engine 
    return strategy.create(*args, **kwargs) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 64, in create 
    dbapi = dialect_cls.dbapi(**dbapi_args) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py", line 289, in dbapi 

मेरे लिए, यह इंगित करने के लिए यह SQLite सामान लोड करने के लिए (जो डिफ़ॉल्ट मैं alembic.ini में है) कोशिश कर रहा है लगता है, लेकिन मुझे लगता है मेरे env.py में निम्नलिखित

cur_db_uri = config.get_section_option('alembic', 'sqlalchemy.url') 
my_db_uri = app.config.get('SQLALCHEMY_DATABASE_URI', cur_db_uri) 
config.set_section_option('alembic', 'sqlalchemy.url', my_db_uri) 

जहां app एक फ्लास्क उदाहरण है: के प्रयास में यह Heroku PostgreSQL कनेक्शन का उपयोग करने के लिए। मैं फ्लास्क-स्क्लाक्लेमी का उपयोग ऐप में अपने डीबी उपयोग को डीआरवाई करने के लिए कर रहा हूं, और फ्लास्क-हेरोकू यह सुनिश्चित करने के लिए कि मेरे सभी फ्लास्क कॉन्फ़िगरेशन वेरिएबल को हेरोकू पर्यावरण चर से ठीक से खींचा जा रहा है।

उत्तर

13

ऐसा लगता है कि कुप्पी के Heroku DATABASE_URL का मूल्य है, जो Heroku पर मेरे अनुप्रयोग के लिए मौजूद नहीं है खींच रहा है। यदि इसके बजाय, मैं मैन्युअल रूप से HEROKU_POSTGRESQL_CRIMSON_URL के मान को app.config['SQLALCHEMY_DATABASE_URI'] पर मानचित्रित करता हूं, यह अपेक्षा के अनुसार काम करता है।

अपडेट: और यह पता चला है कि मैं अपने डीबी को pg:promote भूल गया था ताकि उस ऐप के लिए डिफ़ॉल्ट हो, इसलिए DATABASE_URL मौजूद नहीं है। तो असली समाधान है: अपने डीबी को बढ़ावा देना न भूलें।

अद्यतन 2: मुझे योग करते हैं: flask-heroku का उपयोग उचित SQLALCHEMY_DATABASE_URI को अपने ऐप्लिकेशन के config में सुई, tweak env.py को अपने ऐप्लिकेशन के लिए कॉन्फ़िगर किया गया alembic.ini में URL के बजाय SQLALCHEMY_DATABASE_URI का उपयोग करें, और उसके बाद heroku run alembic upgrade head के माध्यम से Heroku के सर्वर पर भबका चलाने के लिए (या जो भी माइग्रेशन आप चलाना चाहते हैं)। यह आपको विभिन्न वातावरणों के लिए समायोजित करने के लिए आईएनआई फ़ाइल को ट्विक करने से रोक देगा (क्योंकि होस्टिंग वातावरण इसे आपके लिए प्रबंधित करेगा)।

+0

धन्यवाद, धन्यवाद, धन्यवाद। – wheaties

+0

यह मेरे लिए काम नहीं किया है, तो आप कृपया मेरी मदद कर सकते बाहर, http://stackoverflow.com/questions/17501082/alembic-migrations-for-flask – GangstaGraham

संबंधित मुद्दे