[Bug] 本地环境初始化后 D1 schema 缺失字段,且提示的 schema reconcile 无对应执行方式
🐛 问题描述
在按照标准流程克隆项目并在本地进行初始化时,执行完基础的 D1 数据库迁移(0001 到 0009)后启动本地开发服务器,后端会报 500 内部错误。
报错日志提示 posts 表缺少 series_slug 等分类相关的字段,并要求“请先运行 schema reconcile”。但在 server/package.json 的 scripts 中并没有找到对应的 reconcile 命令。此外,项目默认的配置文件及代码逻辑中,环境变量 AUTO_SCHEMA_MIGRATION 似乎默认为 "false",导致应用启动时无法自动补齐字段,造成了本地部署的死循环。
🔁 复现步骤
- 克隆项目:
git clone https://github.com/one-ea/Monolith.git
- 安装依赖:
cd Monolith && npm install
- 进入 server 目录并应用基础迁移:
cd server && npm run db:migrate:local
- 启动本地开发服务:
npm run dev
- 终端出现 500 错误循环报错。
✅ 期望行为
执行完 db:migrate:local 并在本地运行 npm run dev 后,项目能够正常启动。如果存在需要动态对齐的 Schema,期望能够:
- 提供例如
npm run db:reconcile 这样的显式脚本命令。
- 或者在初始化文档/
.dev.vars.example 中补充明确的指引,告知本地开发需要配置 AUTO_SCHEMA_MIGRATION="true"。
❌ 实际行为
项目启动后持续抛出 500 错误,终端核心报错信息如下:
[ERROR] Error: D1 schema 未就绪,缺少列:posts.series_slug, posts.series_order, posts.category。请先运行 schema reconcile。
🖥️ 环境信息
- 浏览器:与浏览器无关 (后端启动错误)
- 操作系统:Windows
- 部署环境:本地开发 (Wrangler local)
- Node/NPM 版本:v24.4.0 & 11.4.2
- Wrangler 版本:4.85.0
📝 补充信息
目前的临时解决办法有以下两种,供参考以修复此逻辑闭环:
- 方案 A:手动在本地的
.dev.vars 中配置环境变量,强制开启 ORM 的自动同步:AUTO_SCHEMA_MIGRATION="true"。
- 方案 B:手动通过
wrangler d1 execute 对本地库执行 ALTER TABLE 补充这三个缺失的字段:
npx wrangler d1 execute monolith-db --local --command="ALTER TABLE posts ADD COLUMN series_slug TEXT;"
npx wrangler d1 execute monolith-db --local --command="ALTER TABLE posts ADD COLUMN series_order INTEGER;"
npx wrangler d1 execute monolith-db --local --command="ALTER TABLE posts ADD COLUMN category TEXT;"
建议作者在 package.json 中暴露 reconcile 脚本,或者将这三个字段直接补充到最新的 .sql 迁移文件中,以提升新用户的本地初始化体验。
[Bug] 本地环境初始化后 D1 schema 缺失字段,且提示的
schema reconcile无对应执行方式🐛 问题描述
在按照标准流程克隆项目并在本地进行初始化时,执行完基础的 D1 数据库迁移(
0001到0009)后启动本地开发服务器,后端会报 500 内部错误。报错日志提示
posts表缺少series_slug等分类相关的字段,并要求“请先运行 schema reconcile”。但在server/package.json的scripts中并没有找到对应的reconcile命令。此外,项目默认的配置文件及代码逻辑中,环境变量AUTO_SCHEMA_MIGRATION似乎默认为"false",导致应用启动时无法自动补齐字段,造成了本地部署的死循环。🔁 复现步骤
git clone https://github.com/one-ea/Monolith.gitcd Monolith && npm installcd server && npm run db:migrate:localnpm run dev✅ 期望行为
执行完
db:migrate:local并在本地运行npm run dev后,项目能够正常启动。如果存在需要动态对齐的 Schema,期望能够:npm run db:reconcile这样的显式脚本命令。.dev.vars.example中补充明确的指引,告知本地开发需要配置AUTO_SCHEMA_MIGRATION="true"。❌ 实际行为
项目启动后持续抛出 500 错误,终端核心报错信息如下:
[ERROR] Error: D1 schema 未就绪,缺少列:posts.series_slug, posts.series_order, posts.category。请先运行 schema reconcile。🖥️ 环境信息
📝 补充信息
目前的临时解决办法有以下两种,供参考以修复此逻辑闭环:
.dev.vars中配置环境变量,强制开启 ORM 的自动同步:AUTO_SCHEMA_MIGRATION="true"。wrangler d1 execute对本地库执行ALTER TABLE补充这三个缺失的字段:npx wrangler d1 execute monolith-db --local --command="ALTER TABLE posts ADD COLUMN series_slug TEXT;"npx wrangler d1 execute monolith-db --local --command="ALTER TABLE posts ADD COLUMN series_order INTEGER;"npx wrangler d1 execute monolith-db --local --command="ALTER TABLE posts ADD COLUMN category TEXT;"建议作者在
package.json中暴露reconcile脚本,或者将这三个字段直接补充到最新的.sql迁移文件中,以提升新用户的本地初始化体验。