Description
After upgrading from 2026.5.7 to 2026.6.1 via openclaw update --yes, the
post-update openclaw doctor step fails. The npm install + global swap succeed;
the doctor verification fails; the gateway is restarted but plugin/task state
stores are broken. The same TypeError: statement.columns is not a function
appears across three independent state migrations.
Environment
- OS: macOS 25.3.0 (Darwin, arm64)
- Node: v23.9.0
- Install method: npm global
- Previous version: 2026.5.7
- Target version: 2026.6.1 (latest tag — just promoted from beta)
Steps to reproduce
- Have
[email protected] installed globally with state in ~/.openclaw/
- Run
openclaw backup create
- Run
openclaw update --dry-run (planned actions look normal)
- Run
openclaw update --yes
Actual
Update Result: ERROR
Before: 2026.5.7
After: 2026.6.1
Steps:
✓ global update (7.09s)
✓ global install swap (1.95s)
✗ openclaw doctor (2.24s)
PluginStateStoreError: Failed to open the plugin state database.
openclaw plugins doctor shows the underlying cause:
- Failed migrating plugin install index /Users/<user>/.openclaw/plugins/installs.json:
TypeError: statement.columns is not a function
- Failed migrating task registry sidecar /Users/<user>/.openclaw/tasks/runs.sqlite:
TypeError: statement.columns is not a function
- Failed migrating task flow sidecar /Users/<user>/.openclaw/flows/registry.sqlite:
TypeError: statement.columns is not a function
Workaround
Downgrade to 2026.5.28 — migrations from 2026.5.7 → 2026.5.28 succeed cleanly.
Possible cause
statement.columns() is a method on node:sqlite prepared statements
(Node 22.16+/23.x). Node 23.9.0 should have it, so either:
- The 2026.6.1 migration code is calling
.columns() against a non-node:sqlite
library (e.g. better-sqlite3 with a different API shape), or
- The migration code in 2026.6.1 has a regression vs. 2026.5.28.
Happy to provide more logs or test a patch.
Description
After upgrading from 2026.5.7 to 2026.6.1 via
openclaw update --yes, thepost-update
openclaw doctorstep fails. The npm install + global swap succeed;the doctor verification fails; the gateway is restarted but plugin/task state
stores are broken. The same
TypeError: statement.columns is not a functionappears across three independent state migrations.
Environment
Steps to reproduce
[email protected]installed globally with state in~/.openclaw/openclaw backup createopenclaw update --dry-run(planned actions look normal)openclaw update --yesActual
openclaw plugins doctorshows the underlying cause:Workaround
Downgrade to 2026.5.28 — migrations from 2026.5.7 → 2026.5.28 succeed cleanly.
Possible cause
statement.columns()is a method onnode:sqliteprepared statements(Node 22.16+/23.x). Node 23.9.0 should have it, so either:
.columns()against a non-node:sqlitelibrary (e.g. better-sqlite3 with a different API shape), or
Happy to provide more logs or test a patch.