프로그래밍 연습하기

Heroku에서 Postgresql 데이터베이스 사용시 에러 본문

클라우드/Heroku

Heroku에서 Postgresql 데이터베이스 사용시 에러

john.k 2021. 6. 11. 18:46
반응형

Heroku Postgres Add-on을 사용하여 Postgresql 데이터베이스를 사용해보려고 했습니다.

그런데 실행이 되지 않아 로그를 살펴보니 다음과 같은 에러가 떴습니다.

sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres

찾아보니 Heroku에서 Database URI를 Heroku Config Vars로 기본적으로 제공해주는데,

 

값이 postgres:// 로 시작합니다.

그런데 SQLAlchemy가 버전업되면서 (1.4버전 이상) postgres URI scheme을 지원하지 않기 때문에,

postgresql로 바꾸어줘야 합니다.

 

그런데 Database URI Config Vars는 수정이 되지 않더라구요.

그래서 scheme만 고친 새로운 Config Var를 추가하여서 그것을 사용하려고 했는데,

알아보니

 

Please note that these credentials are not permanent.

Heroku rotates credentials periodically and updates applications where this database is attached.

 

데이터베이스 정보가 바뀔 수 있는 것 같더라구요.

기본적으로 제공되는 Database URI는 그에 맞게 생성이 될텐데

제가 새로 만든 Config Var는 바뀌지 않으니깐 이 방법은 오래 사용하지 못할 것 같았습니다.

 

https://help.heroku.com/ZKNTJQSK/why-is-sqlalchemy-1-4-x-not-connecting-to-heroku-postgres

 

Why is SQLAlchemy 1.4.x not connecting to Heroku Postgres? - Heroku Help

Ask on Stack Overflow Engage with a community of passionate experts to get the answers you need Ask on Stack Overflow

help.heroku.com

그래서 이런 방식으로 아예 웹 애플리케이션 내부에서 값을 바꿔서 사용하기로 했습니다.

 

위 링크는 로그인을 해야 보여서 제가 살짝 바꿔서 쓰는 코드를 올립니다.

DATABASE_URL = os.getenv('DATABASE_URL')
if DATABASE_URL.startswith("postgres://"):
    DATABASE_URL = DATABASE_URL.replace("postgres://", "postgresql://", 1)

 

반응형

'클라우드 > Heroku' 카테고리의 다른 글

Heroku 무료 서비스 종료  (0) 2022.09.05
Heroku Config Var 설정 시 주의점  (0) 2021.11.02
Heroku를 이용한 무료 웹 호스팅  (0) 2021.05.28
Comments