我有一个带有两个容器的应用程序,其中一个有我的数据库。当我尝试运行 alembic 命令
alembic revision --autogenerate -m "create cases table"
来更新迁移时,我收到以下错误:
sqlalchemy.exc.OperationalError: (psycopg.OperationalError) [Errno -3] Temporary failure in name resolution
(Background on this error at: https://sqlalche.me/e/20/e3q8)
在文件 alembic.ini 中,变量 sqlalchemy.url 配置为通过环境变量获取数据库 url。
文件 env.py
config.set_main_option('sqlalchemy.url', Settings().DATABASE_URL)
文件.env
DATABASE_URL=postgresql+psycopg://app_user:app_password@giatros_db:5432/app_db
POSTGRES_USER=app_user
POSTGRES_DB=app_db
POSTGRES_PASSWORD=app_password
我需要了解为什么会发生此错误并帮助找到解决方案。
您可能正在从本地终端运行 alembic 命令。
在 env 文件中,提到数据库在
giatros_db
可用。但是本地运行时,giatros_db
没有解决。
这可以通过以下方式解决:
在运行 alembic 命令之前覆盖
DATABASE_URL
:
export DATABASE_URL="postgresql+psycopg://app_user:app_password@localhost:5432/app_db"
alembic revision --autogenerate -m "create cases table"
或覆盖命令
DATABASE_URL="postgresql+psycopg://app_user:app_password@localhost:5432/app_db" alembic revision --autogenerate -m "create cases table"
在容器内运行 alembic 命令
docker run -it <container_name> alembic revision --autogenerate -m "create cases table"