PuppyIP 资源中心
云服务运维 4 分钟 发布于 2026-11-13

D1 虚拟表导出:sqlite3_cli_only 不能导回 D1

Cloudflare D1 新增的 sqlite3_cli_only 导出可包含 FTS5 和 R*Tree 虚拟表,但文件不能导回 D1。使用全文搜索或空间索引的开发者,应先确定接收文件的是 SQLite CLI 还是 D1,再选择兼容模式并安排导出窗口。

Cloudflare D1 虚拟表 FTS5 R*Tree SQLite 导出

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • Cloudflare 于 2026-11-12 发布更新:D1 可用 sqlite3_cli_only 格式导出包含 FTS5、R*Tree 等虚拟表的数据库。
  • 默认 d1 转储可导入 D1;sqlite3_cli_only 匹配 sqlite3 .dump 输出,但不能重新导入 D1。
  • Wrangler 可用 --compatibility sqlite3_cli_only 选择该格式;官方没有注明最低所需版本。
  • 旧版导入导出指南仍保留虚拟表不受支持的说法;更新日期早于新 changelog 与 API 说明。

虚拟表现在可以纳入导出

Cloudflare 于 2026-11-12 发布更新,D1 导出现在可以包含虚拟表,例如使用 SQLite FTS5 的全文搜索表和 R*Tree 空间索引表。更新只给出日历日期,没有注明发布时间时区。

变化在于可以生成包含这些表的特定转储格式,并不意味着所有导出文件都能在 SQLite 与 D1 之间往返。先确认接收文件的工具,以及最终是否要把 SQL 导入回 D1。

两种兼容模式不能混用

D1 Export API 的 dump_options.compatibility 支持 d1 与 sqlite3_cli_only。默认 d1 格式可导入 D1;sqlite3_cli_only 则匹配 sqlite3 .dump 输出,并包含 FTS5、R*Tree 等虚拟表。

sqlite3_cli_only 导出能否导回 D1?不能:Cloudflare 明确说明这种输出不能再导入 D1。需要 D1 导入目标时,两种格式不可互换;更新也建议没有虚拟表的数据库使用标准导出格式。

Wrangler 示例只展示导出参数

若目的是在本地检查含虚拟表的 SQL,或交给 SQLite 命令行处理,可在 Wrangler 导出时指定 --compatibility sqlite3_cli_only。下面将示例名称 example-d1 换成自己的已授权数据库名;这只是参数组合示例,本文没有实际运行:

npx wrangler d1 export example-d1 --remote --compatibility sqlite3_cli_only --output=./database.sql 这会为远端 D1 写出 SQL 文件,但不表示该文件可回灌 D1,也不代表导出已验证。官方 changelog 未注明这个选项的最低 Wrangler 版本;执行前应查看当前版本的帮助或发行说明。

API 导出需要持续轮询

D1 Export API 的此流程使用 POST,并要求请求体的 output_format 为 polling。首次响应返回 at_bookmark,后续轮询把它作为 current_bookmark 传回。任务进行中必须持续轮询;停止轮询会导致导出自动取消。

状态完成后,响应会提供有效期一小时的 signed_url。请在有效期内下载,并按自己的访问权限与保留规则管理文件。API 文档没有承诺固定完成时间,因此不要按臆测的时长安排依赖步骤。

安排窗口并留意旧指南日期

导出进行期间,D1 会阻塞其他数据库查询。先评估业务查询是否能在这段时间暂不可用,再选择合适维护窗口;官方资料没有给出固定耗时,也未说明套餐、地区、价格或资格范围。

《Import and export data》指南标注最后更新于 2026-04-21,仍保留“虚拟表不支持导出”及先删除再重建的旧建议;这早于 2026-11-12 changelog。当前 changelog 与 API 说明了虚拟表的 sqlite3_cli_only 导出,同时明确不能导回 D1。不要照旧段落删除表。请先在自己的隔离副本核对目标工具链;本文未执行实际导出、下载或恢复,不能作为实测结论。

资料来源

常见问题

签名链接一小时后失效,已下载的文件也会被删除吗?

API 的一小时限制指下载链接可用期。它没有说明会删除你已下载的文件;文件的本地保留与访问控制由你管理。若链接已失效,当前文档未说明能直接续期,不应假设原链接会重新生效。

团队交接导出文件时,至少要说明什么?

建议同时记录源数据库名称、导出时间及其时区、compatibility 模式和接收文件的目标工具。将文件交给其他成员时,明确标记 sqlite3_cli_only 不能导回 D1,避免把它误用为 D1 恢复文件。