CRLF 换行符致触发器迁移失败:ChatGPT Sites + Cloudflare D1 部署踩坑复盘

CryptoDir · reddit · 2026-10-05

发帖人详细记录了一次 ChatGPT Sites 托管发布流程中 Cloudflare D1 迁移失败的排查过程。

现象:部署在创建两个 SQLite 触发器的迁移时报 incomplete input: SQLITEERROR,但本地通过 Wrangler/workerd 测试正常,旧版本仍在线。

排查发现:Git 仓库里迁移文件是 LF(1781 字节),但 Windows 的 core.autocrlf=true 把 checkout 转成 CRLF,打包器保留了 checkout 的字节,实际部署归档里是 CRLF(1816 字节,多出 35 个回车符)。触发器体用大写 BEGIN 和 SELECT RAISE(…),与 Cloudflare workers-sdk 的 issue #14991 和 #15314(触发器解析、关键字大小写与换行符)高度相关。

修复:用一条窄范围的 .gitattributes 规则对该迁移文件强制 LF,修复后字节与原 Git blob 完全一致。

遗留问题:Sites 提供的工具不暴露迁移账本和触发器定义,无法确认失败的迁移是整体回滚、部分应用还是已记录;作者等待支持团队只读状态确认,寻求保数据的最低限度恢复方案而非重置数据库。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →