2014-01-29 49 views
0

我正在尝试将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之间的这种明显的区别之外,我无法弄清楚发生了什么或者我应该如何调试。谢谢。

回答

1

数据库的URL取自Flask应用程序实例中的SQLALCHEMY_DATABASE_URI配置。这在发生在migrations文件夹中的Alembic的env.py配置中发生。

在将控制权移交给Flask-Migrate和Alembic之前,您是否在配置中存储os.environ['DATABASE_URL']的值?看起来你有一个默认的基于SQLite的数据库,它永远不会被Heroku提供的真正的数据覆盖。

+0

我实际上使用[Flask-Heroku](https://github.com/kennethreitz/flask-heroku/),这意味着要照顾配置SQLALCHEMY_DATABASE_URI(我认为)。我会尝试没有这个设置,并从os.environ手动设置它。 – kendlete

+0

感谢米格尔这工作。我不明白为什么Heroku配置似乎表明已设置正确的DATABASE_URL,但它不起作用。尽管如此,我现在在alembic env.py文件和我应用程序的settings.py文件中为Flask配置工作了SQLALCHEMY_DATABASE_URI = os.environ ['DATABASE_URI']。谢谢您的帮助。期待您的书! – kendlete

相关问题