Skip to content

Troubleshooting

Every error has a stable code (see Error codes) and a request_id that matches a line in the engine’s log.

You see It means Do this
unauthorized The token is missing, mistyped, revoked or expired. Check Authorization: Bearer <token>. lumbung token list shows expiry and last use.
rate_limited Too many requests for this token, or too many failed logins from this address. Wait for Retry-After. Behind a proxy, set LUMBUNG_CLIENT_IP_HEADER so clients don’t share one limit.
forbidden The token is valid but its scope doesn’t cover this. Use a token with more access, or a database token instead of a branch token. See Tokens and scopes.
database_not_found for a database that exists The token is scoped to another database; other databases look like they don’t exist. Use a token for this database.
read_only A read token, or read_only: true, tried to write. Use a write token.
statement_denied The statement uses something Lumbung blocks: ATTACH, VACUUM, BEGIN/COMMIT, temp tables, a pragma off the allowlist. Drop it. Each request is already a transaction; use a batch for several statements. See Security model.
multiple_statements query got more than one statement. Use batch, or lumbung migrate for a file.
statement_timeout The statement ran past LUMBUNG_STATEMENT_TIMEOUT. Add an index or a LIMIT; check the branch’s slow-query log.
result_too_large The result is past the row or byte cap. Page with LIMIT and OFFSET or a keyset, or select fewer columns.
branch_size_limit, instance_quota_exceeded The write would grow past a size limit. Delete data (freed pages are reused), or raise the limit.
insufficient_disk The disk has less free space than LUMBUNG_MIN_FREE_DISK. Free disk space; delete old snapshots or empty the trash.
busy The branch stayed locked past the busy timeout, or a reset or import is waiting on it. Retry. Long-running writes on the same branch queue behind each other.
unavailable from /health The engine can’t serve, usually because meta.db is newer than the binary after a rollback. Run the newer version, or restore the meta.db backup. See Upgrades.
branch_protected Deleting, resetting or replacing a protected branch. Unprotect it first, or import into a new branch and promote it.

Run lumbung login --url <engine URL>, or set LUMBUNG_URL and LUMBUNG_TOKEN. If you pass --url for a different instance, pass its token too: the saved token only goes to the saved URL.

It didn’t: each migration file runs in one transaction, so a failing file changes nothing. Fix the file and run lumbung migrate apply again. Files that ran before it stay applied.

It’s in the trash until LUMBUNG_TRASH_RETENTION (7 days) passes:

Terminal window
lumbung db trash

Then lumbung db restore <name or id>.