Heroku SQLAlchemy数据库不存在

时间:2016-06-19 17:44:22

标签: python postgresql heroku sqlalchemy heroku-postgres

我在heroku上运行了一个python 3.5工作者。

self.engine = create_engine(os.environ.get("DATABASE_URL"))

我的代码适用于本地,通过Travis CI,但在heroku上遇到错误 - OperationalError: (psycopg2.OperationalError) FATAL: database "easnjeezqhcycd" does not exist

easnjeezqhcycd是我的用户,不是数据库名称。由于我没有使用烧瓶的sqlalchemy,我还没有找到一个人与同一个人打交道

我尝试销毁我的插件数据库,并在heroku上创建了独立的postgres数据库 - 同样的错误。

SQLAlchemy不接受heroku的URL的不同之处是什么?有没有办法使用psycopg2建立连接并将其传递给SQLAlchemy?

3 个答案:

答案 0 :(得分:1)

旧问题,但答案似乎是database_existscreate_database在引擎网址以postgresql开头时有特殊情况代码,但如果网址仅以{{{}开头1}},这些功能将失败。但是,SQLAlchemy通常适用于两种变体。

因此,解决方案是确保数据库网址以postgres而不是postgresql://开头。

答案 1 :(得分:0)

错误实际上是由

引起的

if not database_exists(self.engine.url): logging.info("Database not found") create_database(self.engine.url) logging.info("Database created")

所以我刚刚在Heroku上创建了配置变量ON_HEROKU并将其包装在if语句

if "ON_HEROKU" not in os.environ: if not database_exists(self.engine.url): logging.info("Database not found") create_database(self.engine.url) logging.info("Database created")

答案 2 :(得分:0)

所以我遇到了同样的错误,经过多次检查后发现DATABASE_URL中有空格。就像DATABASE_URL="url<space>"

删除空格后,我的代码运行得非常好。