2016-06-19 26 views
1

私はherokuでpython 3.5ワーカーを実行しています。私のコードは、ローカルで動作Heroku SQLAlchemyデータベースが存在しません

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

は、トラヴィスCIを渡しますが、Herokuの上のエラーを取得します - OperationalError: (psycopg2.OperationalError) FATAL: database "easnjeezqhcycd" does not exist

easnjeezqhcycdは私のユーザーではなく、データベース名です。私はフラスコのSQLデータベースを使用していないので、同じ人物を扱っている人は一人もいません

私のアドオンデータベースを破壊して、スタンドアロンのpostgres dbをheroku上に作成しようとしました。

SQLAlchemyのは、それを受け入れないことHerokuののURLについての異なる何ですか? psycopg2を使って接続を確立してSQLAlchemyに渡す方法はありますか?

答えて

1

古い質問であれば、しかし、答えはそうですdatabase_existscreate_databaseには、エンジンURLがpostgresqlで始まる場合の特別なケースコードがありますが、URLがちょうどpostgres、これらの機能は失敗します。しかし、SQLAlchemyは一般に両方のバリエーションでうまく動作します。

解決策は、データベースURLがpostgresql://で始まり、postgres://ではないことを確認することです。

+0

更新:database_existsとcreate_databaseが両方の接頭辞を処理するように修正されました。 –

0

エラーは、実際にはそう

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

によって引き起こされたHerokuの上のI作成した設定変数ON_HEROKUとそれを包ん声明

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")

関連する問題