尝试运行命令时出错:alembic revision --autogenerate -m“description”

问题描述 投票:0回答:1

我有一个带有两个容器的应用程序,其中一个有我的数据库。当我尝试运行 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

我需要了解为什么会发生此错误并帮助找到解决方案。

python sqlalchemy fastapi dockerpy
1个回答
0
投票

您可能正在从本地终端运行 alembic 命令。

在 env 文件中,提到数据库在

giatros_db
可用。但是本地运行时,
giatros_db
没有解决。

这可以通过以下方式解决:

  1. 在运行 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"
    
  2. 在容器内运行 alembic 命令

    docker run -it <container_name> alembic revision --autogenerate -m "create cases table"
    
© www.soinside.com 2019 - 2024. All rights reserved.