我正在尝试将Heroku应用程序部署到Heroku。我已经被推到Heroku的,并且可以访问我的登录页面,但到数据库的任何调用给出了一个OperationalError:Heroku上的Alembic/Flask-migrate迁移运行但不创建表
2014-01-29T12:12:31.801772+00:00 app[web.1]: OperationalError: (OperationalError) no such table: projects_project u'SELECT
使用烧瓶迁移我可以成功运行本地迁移和升级:
INFO [alembic.migration] Context impl PostgresqlImpl.
INFO [alembic.migration] Will assume transactional DDL.
INFO [alembic.migration] Running upgrade None -> 4b56d58e1d4c, empty message
当我尝试使用heroku run python manage.py db upgrade
在Heroku上升级似乎发生升级,但上下文impl。现在的SQLite?:
(dev01)Toms-MacBook-Pro:dev01 kt$ heroku run python manage.py db upgrade
Running `python manage.py db upgrade` attached to terminal... up, run.9069
INFO [alembic.migration] Context impl SQLiteImpl.
INFO [alembic.migration] Will assume non-transactional DDL.
INFO [alembic.migration] Running upgrade None -> 4b56d58e1d4c, empty message
运行Heroku pg:info
给出:
=== HEROKU_POSTGRESQL_PINK_URL (DATABASE_URL)
Plan: Dev
Status: available
Connections: 0
PG Version: 9.3.2
Created: 2014-01-27 18:55 UTC
Data Size: 6.4 MB
Tables: 0
Rows: 0/10000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported
对Heroku的升级相关的日志:
2014-01-29T12:55:40.112436+00:00 heroku[api]: Starting process with command `python manage.py db upgrade` by [email protected]
2014-01-29T12:55:44.638957+00:00 heroku[run.9069]: Awaiting client
2014-01-29T12:55:44.667692+00:00 heroku[run.9069]: Starting process with command `python manage.py db upgrade`
2014-01-29T12:55:44.836337+00:00 heroku[run.9069]: State changed from starting to up
2014-01-29T12:55:46.643857+00:00 heroku[run.9069]: Process exited with status 0
2014-01-29T12:55:46.656134+00:00 heroku[run.9069]: State changed from up to complete
此外,heroku config
给我:
(dev01)Toms-MacBook-Pro:dev01 kt$ heroku config
=== myapp Config Vars
DATABASE_URL: postgres://xxx.compute-1.amazonaws.com:5432/da0jtkatk6057v
HEROKU_POSTGRESQL_PINK_URL: postgres://xxx.compute-1.amazonaws.com:5432/da0jtkatk6057v
where [xxx == xxx]
上下文是如何实现的。组?除了本地工作和heroku之间的这种明显的区别之外,我无法弄清楚发生了什么或者我应该如何调试。谢谢。
我实际上使用[Flask-Heroku](https://github.com/kennethreitz/flask-heroku/),这意味着要照顾配置SQLALCHEMY_DATABASE_URI(我认为)。我会尝试没有这个设置,并从os.environ手动设置它。 – kendlete
感谢米格尔这工作。我不明白为什么Heroku配置似乎表明已设置正确的DATABASE_URL,但它不起作用。尽管如此,我现在在alembic env.py文件和我应用程序的settings.py文件中为Flask配置工作了SQLALCHEMY_DATABASE_URI = os.environ ['DATABASE_URI']。谢谢您的帮助。期待您的书! – kendlete