Alembic迁移表至默认postgres库而非指定test_db问题求助
解决Alembic迁移表到默认postgres库而非指定test_db的问题
问题根源在于你的数据库连接URL没有明确指定目标数据库名称,导致Alembic默认连接到了与用户名同名的postgres数据库,而非Docker Compose中预先创建的test_db。
修复步骤
1. 修改.env文件中的数据库连接URL
在.env文件里,给OPERATIONAL_DATABASE_URL添加数据库名称test_db:
OPERATIONAL_DATABASE_URL = postgresql+psycopg2://postgres:postgres@db:5432/test_db
PostgreSQL连接URL的标准格式为:postgresql://[user]:[password]@[host]:[port]/[dbname],缺失dbname时会默认使用当前用户名对应的数据库(这里就是postgres)。
2. 验证应用与迁移的一致性
你的main.py和alembic/env.py都读取这个环境变量,修改后两者都会连接到test_db,确保应用操作和数据库迁移的目标库一致。
3. 重新执行迁移操作
如果之前已经在postgres库中生成了迁移表,可根据实际情况清理旧数据后重新执行迁移:
# (可选)删除旧迁移版本文件 rm alembic/versions/*.py # 生成新迁移版本 alembic revision --autogenerate -m "initial tables" # 运行迁移 alembic upgrade head
额外说明
Docker Compose中的POSTGRES_DB=test_db仅在容器首次启动时创建该数据库,后续连接仍需在URL中明确指定,否则会默认连接到postgres库。
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

