数据库配置说明

🔍 当前数据库状态

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:

  1. 确保 PostgreSQL 运行在 localhost:5432
  2. 创建数据库:CREATE DATABASE mbe_dev;
  3. 使用默认配置即可

选项 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: ...

说明数据库连接配置不正确。


📝 重要说明

  1. 不使用 SQLite: 后端已明确要求使用 PostgreSQL,不支持 SQLite
  2. Docker vs 本地: 可以使用 Docker PostgreSQL 或本地安装的 PostgreSQL
  3. 端口配置: 确保后端配置的端口与实际 PostgreSQL 端口一致

最后更新: 2026-02-08