You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.2 KiB
3.2 KiB
数据库连接问题排查指南
问题症状
ERROR: role "postgres" does not exist
ERROR: Application startup failed. Exiting.
前端所有 API 请求失败,显示 CORS 错误和 500 错误。
根本原因
后端服务器无法启动,因为无法连接到 PostgreSQL 数据库。
排查步骤
1. 检查 Docker 容器状态
cd server
docker-compose ps
期望输出:
NAME IMAGE STATUS
jointo-postgres postgres:17 Up
jointo-redis redis:7-alpine Up
jointo-minio minio/minio Up
2. 如果容器未运行,启动容器
cd server
docker-compose up -d
3. 检查 PostgreSQL 日志
docker-compose logs postgres
4. 验证数据库连接
# 进入 PostgreSQL 容器
docker-compose exec postgres psql -U postgres -d jointo
# 在 psql 中执行
\du # 查看用户列表
\l # 查看数据库列表
\q # 退出
5. 检查端口占用
# 检查 PostgreSQL 端口
lsof -i :6181
# 检查 Redis 端口
lsof -i :6183
# 检查 MinIO 端口
lsof -i :6185
常见问题和解决方案
问题 1: Docker 容器未运行
解决方案:
cd server
docker-compose up -d
问题 2: 端口被占用
解决方案:
- 修改
docker-compose.yml中的端口映射 - 或者停止占用端口的进程
问题 3: 数据库用户不存在
解决方案:
# 进入容器
docker-compose exec postgres psql -U postgres
# 创建用户(如果需要)
CREATE USER postgres WITH PASSWORD 'postgres';
ALTER USER postgres WITH SUPERUSER;
# 创建数据库(如果需要)
CREATE DATABASE jointo OWNER postgres;
问题 4: 数据库未初始化
解决方案:
# 运行数据库迁移
cd server
python run_migration.py
重启后端服务
方法 1: 使用启动脚本
cd server
./start_docker.sh
方法 2: 手动启动
cd server
source venv/bin/activate
uvicorn app.main:app --host 0.0.0.0 --port 6170 --reload
验证服务状态
1. 检查健康端点
curl http://localhost:6170/api/v1/health
期望输出:
{
"status": "healthy",
"timestamp": "2026-01-21T..."
}
2. 检查数据库连接
curl http://localhost:6170/api/v1/health/db
3. 查看服务日志
cd server
tail -f server.log
完整重置流程
如果以上方法都不行,可以完全重置:
cd server
# 1. 停止所有容器
docker-compose down -v
# 2. 清理数据卷(警告:会删除所有数据)
docker volume prune -f
# 3. 重新启动容器
docker-compose up -d
# 4. 等待容器启动(约 10 秒)
sleep 10
# 5. 运行数据库迁移
python run_migration.py
# 6. 启动后端服务
./start_docker.sh
面包屑功能测试
数据库和后端服务正常运行后,面包屑功能应该可以正常工作:
- 打开前端:http://localhost:6160/projects
- 点击任意文件夹
- 查看页面顶部的面包屑导航
- 点击面包屑中的任意项,应该能正确导航