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

1.7 KiB

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. 添加缺失的数据库字段

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. 运行数据库迁移

cd /var/www/ai-chatbot
pnpm db:migrate

3. 重启应用

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. 确保所有数据库迁移都已正确执行