risingwavelabs/risingwave · error · ErrorCode
Item not found: {0}
Error message
Item not found: {0} What it means
RisingWave frontend's ErrorCode::ItemNotFound variant, rendered as "Item not found: {0}". It is raised by the binder when a referenced item cannot be located in the bind context — most commonly an unresolvable column name (BindContext at src/frontend/src/binder/bind_context.rs:211,446,468,477, e.g. "Invalid column: {name}") and in column binding (src/frontend/src/binder/expr/column.rs).
Source
Thrown at src/frontend/src/error.rs:155
#[backtrace]
#[message]
BoxedError,
),
#[error("Protocol error: {0}")]
ProtocolError(#[message] String),
#[error("Scheduler error: {0}")]
SchedulerError(
#[source]
#[backtrace]
BoxedError,
),
#[error("Task not found")]
TaskNotFound,
#[error("Session not found")]
SessionNotFound,
#[error("Invalid reference: {0}")]
InvalidReference(String),
#[error("Item not found: {0}")]
ItemNotFound(String),
#[error("Duplicate Relation Name: {0}")]
DuplicateRelationName(String),
#[error("Invalid insert operation: {0}")]
InsertViolation(String),
#[error("Invalid input syntax: {0}")]
InvalidInputSyntax(#[message] String),
#[error("Cannot compare in memory: {0}")]
MemComparableError(#[from] memcomparable::Error),
#[error("Error while de/se values: {0}")]
ValueEncodingError(
#[from]
#[backtrace]
ValueEncodingError,
),
#[error("Invalid value `{config_value}` for `{config_entry}`")]
InvalidConfigValue {
config_entry: String,View on GitHub (pinned to 6469eb736d)
Solutions
- Run SHOW COLUMNS FROM <relation> and fix the column name/case.
- Re-sync the application schema cache after DDL changes (restart ORM/refresh metadata).
- Qualify the column with the intended table/alias and confirm that relation is in the FROM clause.
- Re-add the dropped/renamed column or update the query to the new name.
Example fix
// before SELECT usr_name FROM users; -- column renamed // after SELECT user_name FROM users; -- matches SHOW COLUMNS FROM users
Defensive patterns
Strategy: validation
Validate before calling
-- before query SELECT column_name FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'user_name';
Try / catch
try { await db.query(sql) } catch (e) {
if (/Item not found:/.test(e.message)) { await refreshSchemaCache(); throw e; }
throw e;
} Prevention
- Refresh ORM/metadata caches after every ALTER TABLE.
- Use SHOW COLUMNS to confirm names before writing queries by hand.
- Pin query templates to a schema version checked in CI.
When it happens
Trigger: SELECT/WHERE references a column that no relation in the FROM clause provides; the column was dropped or renamed; referencing a column of one table while only another is in scope; system catalog code paths returning missing items.
Common situations: Schema drift after an ALTER TABLE rename/drop; typos in column names; cross-database assumptions; generated code or ORMs with stale column lists.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Invalid reference: {0}
- Duplicate Relation Name: {0}
- Invalid insert operation: {0}
- {} must contain 1 argument
- Bind error: {0}
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/ea1b13ef88ba0f5f.
Report an issue: GitHub.