数据库配置说明
🔍 当前数据库状态
PostgreSQL 容器
从 Docker 检查结果看,有多个 PostgreSQL 容器在运行:
| 容器名 | 端口映射 | 状态 | 用途 |
|---|---|---|---|
mbe-postgres-local |
5434:5432 |
✅ 运行中 | 本地开发(端口 5434) |
mbe-postgres-dev |
5433:5432 |
✅ 运行中 | 开发环境(端口 5433) |
mbe-postgres |
5432:5432 |
✅ 运行中 | 生产环境(端口 5432) |
后端默认配置
文件: src/config.py
database_url: str = "postgresql+asyncpg://postgres:postgres@localhost:5432/mbe_dev"
问题: 后端默认连接 localhost:5432,但实际的本地开发数据库在 localhost:5434!
🔧 解决方案
选项 1: 使用 Docker PostgreSQL(推荐)
如果使用 mbe-postgres-local 容器(端口 5434),需要设置环境变量:
# 设置数据库连接
$env:DATABASE_URL = "postgresql+asyncpg://postgres:postgres@localhost:5434/mbe_dev"
# 启动后端服务
cd d:\Mises\mises-behavior-engine
python -m uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
选项 2: 使用本地 PostgreSQL(如果已安装)
如果本地已安装 PostgreSQL 在端口 5432:
- 确保 PostgreSQL 运行在
localhost:5432 - 创建数据库:
CREATE DATABASE mbe_dev; - 使用默认配置即可
选项 3: 启动正确的 PostgreSQL 容器
如果后端需要连接端口 5432 的 PostgreSQL:
# 启动 mbe-postgres 容器(如果未运行)
cd d:\Mises\mises-behavior-engine
docker-compose -f docker-compose.prod.yml up -d postgres
✅ 验证数据库连接
测试连接
# 测试端口 5434(mbe-postgres-local)
docker exec mbe-postgres-local psql -U postgres -d mbe_dev -c "SELECT 1;"
# 测试端口 5432(mbe-postgres)
docker exec mbe-postgres psql -U postgres -d mbe_dev -c "SELECT 1;"
检查后端日志
启动后端服务时,应该看到:
INFO: Using PostgreSQL database: localhost:5432/mbe_dev
INFO: Database connection established
如果看到:
WARNING: Database connection failed: ...
说明数据库连接配置不正确。
📝 重要说明
- 不使用 SQLite: 后端已明确要求使用 PostgreSQL,不支持 SQLite
- Docker vs 本地: 可以使用 Docker PostgreSQL 或本地安装的 PostgreSQL
- 端口配置: 确保后端配置的端口与实际 PostgreSQL 端口一致
最后更新: 2026-02-08