lovart3/问题修复说明.md
2025-12-17 20:15:18 +08:00

67 lines
1.7 KiB
Markdown

# 500 错误修复说明
## 问题描述
页面白屏,报错:
```
[Error] Failed to load resource: the server responded with a status of 500 (Internal Server Error) (guest, line 0)
```
## 根本原因
数据库表 `User` 缺少新增的字段:
- `role` (VARCHAR, 默认值: 'regular')
- `isActive` (BOOLEAN, 默认值: true)
- `createdAt` (TIMESTAMP, 默认值: NOW())
- `updatedAt` (TIMESTAMP, 默认值: NOW())
代码在 `createGuestUser()` 和 `authorize()` 函数中尝试访问这些字段,但数据库表中不存在,导致查询失败。
## 修复步骤
### 1. 添加缺失的数据库字段
```sql
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS role VARCHAR DEFAULT 'regular' NOT NULL;
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "isActive" BOOLEAN DEFAULT true NOT NULL;
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "createdAt" TIMESTAMP DEFAULT NOW() NOT NULL;
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "updatedAt" TIMESTAMP DEFAULT NOW() NOT NULL;
```
### 2. 运行数据库迁移
```bash
cd /var/www/ai-chatbot
pnpm db:migrate
```
### 3. 重启应用
```bash
pm2 restart ai-chatbot
```
## 验证结果
- ✅ 数据库字段已添加
- ✅ 应用已重启
- ✅ Guest 路由正常响应(返回重定向,这是预期行为)
## 当前状态
应用现在应该可以正常访问:
- **本地访问**: `http://localhost:3001` ✅
- **穿透访问**: `http://156.225.27.52:5245` ✅
## 注意事项
1. 所有现有用户需要更新,为它们设置默认的 `role` 和 `isActive` 值
2. 如果还有其他数据库迁移未执行,需要运行 `pnpm db:migrate`
## 后续建议
1. 检查是否有其他数据库迁移未执行
2. 为现有用户更新 `role` 和 `isActive` 字段
3. 确保所有数据库迁移都已正确执行