2016-06-19 2 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은 데이터베이스 이름이 아닌 내 사용자입니다. 플라스크의 sqlalchemy를 사용하지 않기 때문에 같은 사람을 다루는 한 사람을 찾지 못했습니다

나는 addon 데이터베이스를 파괴하고 heroku에서 독립 실행 형 postgres db를 만들려고했습니다.

heroku의 URL이 SQLAlchemy에서 허용하지 않는 점은 무엇입니까? psycopg2를 사용하여 연결을 설정하고 SQLAlchemy에 전달하는 방법이 있습니까? 문

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

답변

1

오래된 질문,하지만 답이 보인다 경우

+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가에 ON_HEROKU가와에 싸서 database_existscreate_database은 엔진 URL이 postgresql으로 시작하는 경우를위한 특별한 경우 코드가 있지만 URL이 단지 postgres 일 경우이 기능은 실패합니다. 그러나 SQLAlchemy는 일반적으로 두 변종 모두에서 잘 작동합니다.

해결책은 데이터베이스 URL이 postgresql://으로 시작하고 postgres://이 아닌지 확인하는 것입니다.

관련 문제