Skip to content

[Bug]: Windows amd64 v1.11.0 fails to start: open sqlite: SQL logic error: out of memory (1) #345

Description

@winter-maple

问题类型

启动失败 / 服务无法启动

部署方式

Windows / 非 Docker(原生 windows_amd64 包 + PowerShell 启动脚本)

CPA 版本

v7.2.71

CPA Manager Plus 版本

v1.11.0(从 v1.10.5 升级失败后已回退到 v1.10.5 可正常使用)

问题描述

升级到 CPA Manager Plus v1.11.0cpa-manager-plus_v1.11.0_windows_amd64.zip)后,Manager Server 无法启动

进程几乎立刻退出,日志仅有:

open sqlite: SQL logic error: out of memory (1)

系统物理内存充足(测试时 FreePhysicalMemory 约 14–15GB),因此更像是 Windows 原生包内 SQLite 初始化失败,而不是真实 OOM。

补充:

  1. 官方 release 中 zip 的 SHA256 与 checksums.txt 一致(包未损坏)。
  2. USAGE_DATA_DIR(全新目录)也会复现 → 不是旧库损坏导致。
  3. 同一台机器、同一启动脚本、同一数据目录下,v1.10.5 可正常启动并打开 http://127.0.0.1:18317/management.html
  4. 系统 Python 的 sqlite3 可打开现有 usage.sqlitePRAGMA integrity_check 返回 ok
  5. 即使直接运行 cpa-manager-plus.exe(无额外参数),也会先尝试 open sqlite 并以同样错误退出。

复现步骤

  1. 在 Windows 上下载并解压 cpa-manager-plus_v1.11.0_windows_amd64.zip
  2. 设置环境变量(示意):
    • HTTP_ADDR=127.0.0.1:18317
    • USAGE_DATA_DIR=<任意空目录或已有 data 目录>
    • CPA_MANAGER_ADMIN_KEY=...
    • CPA_UPSTREAM_URL=http://127.0.0.1:8317
    • CPA_MANAGEMENT_KEY=...
    • USAGE_COLLECTOR_MODE=http
    • USAGE_POLL_INTERVAL_MS=500
  3. 运行 cpa-manager-plus.exe
  4. 观察进程立即退出,stderr 出现:
    open sqlite: SQL logic error: out of memory (1)
  5. 将同一脚本/环境改回 v1.10.5 exe → 可正常监听 18317。

也可不依赖已有数据,仅用空 USAGE_DATA_DIR 启动,同样失败。

关键配置

deployment: Windows native package (windows_amd64)
start: PowerShell script setting env vars then Start-Process cpa-manager-plus.exe
http_addr: 127.0.0.1:18317
cpa_upstream: http://127.0.0.1:8317
collector_mode: http
poll_interval_ms: 500
cpa_version: v7.2.71
cpamp_broken: v1.11.0
cpamp_working: v1.10.5

(未在此粘贴 admin/management key 等敏感信息。)

/status 返回内容

无法获取:v1.11.0 进程未成功监听,无法访问 /status。
v1.10.5 回退后服务正常。

日志

2026/07/13 15:38:18 open sqlite: SQL logic error: out of memory (1)
2026/07/13 15:39:05 open sqlite: SQL logic error: out of memory (1)
2026/07/13 15:39:50 open sqlite: SQL logic error: out of memory (1)
2026/07/13 15:40:11 open sqlite: SQL logic error: out of memory (1)  # empty USAGE_DATA_DIR

截图

N/A(进程在绑定端口前已退出)

期望行为

  • v1.11.0 Windows amd64 原生包应能在空 data 目录下正常初始化 SQLite 并启动。
  • 若存在数据迁移,应给出明确错误信息,而不是 SQLITE_NOMEM 被映射成 out of memory。
  • 在真实内存充足时不应报 out of memory。

检查清单

  • 我已经搜索过现有 Issues,没有找到重复问题(搜索 out of memory / open sqlite / Windows 启动失败:无匹配)
  • 我已经确认敏感信息已经脱敏,例如 token、key、账号信息

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions