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

  1. Run SHOW COLUMNS FROM <relation> and fix the column name/case.
  2. Re-sync the application schema cache after DDL changes (restart ORM/refresh metadata).
  3. Qualify the column with the intended table/alias and confirm that relation is in the FROM clause.
  4. 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

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


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/ea1b13ef88ba0f5f. Report an issue: GitHub.