迁移文件存在不等于数据库已升级

**代码里有了 migration 文件,不代表数据库已经执行过它。** 缺迁移时数据库会明确报「表不存在」,但如果错误被上层统一收口,用户看到的只是「上传失败」这种无信息量的提示。

症状与真相的距离

代码:请把附件写进 AgentFileAttachment
数据库:我没有这张表
用户看到:附件上传失败
  • 「上传失败」是前端把后端错误统一收口后的提示,它只说明「这一层失败了」,不说明失败在哪一层。
  • 同一句提示背后可能是完全不同的原因:迁移未执行、key 没配、请求打到了别的服务、文件格式不走该链路。先分层,别按提示字面猜。

判据

  • 直连库看表是否存在 / migrate status 是否 up to date,而不是看仓库里有没有那个 migration 目录。
  • 应用迁移前先确认 DATABASE_URL 指向的是哪个库 —— 这个动作会改真实数据库结构,不能对生产库盲跑。

相关