Skip to main content
Common errors you might hit, and how to fix them. Each entry states the cause and the fix.

update / delete fails on an in-memory connection

These require durable storage. Connect with a path or s3:// URI, not memory://:

update reports a cardinality mismatch

update replaces matched rows 1:1, so the number of rows your predicate matches must equal the number of replacement rows you pass. Match a specific set (e.g. by doc_id) and supply exactly that many rows.

”Table already exists” on create_table

The table is already in the catalog. Use open_table to get a handle to the existing table, or drop_table first if you mean to recreate it.

”Unknown table” / “not found”

The table name doesn’t exist in the catalog (a typo, or it was never created). Check list_tables(). In SQL, the table name passed to a search function (bm25_search('docs', …)) must be an existing catalog table.

Schema or vector-dimension mismatch on append

Appended rows must match the table’s declared schema (column names and types). For the vector column, each vector’s length must equal the index dimension you declared in IndexSpec.vector(column, dim, …), and that must match your embedding model’s output.

append fails with HTTP 413 on Infino Cloud

The request body went over the hosted data-plane cap of 128 MiB per request. Split the load into smaller appends; target 100 MiB or less of Arrow data per batch, sized down if rows carry wide vectors. See Limits.

append fails with HTTP 503 on Infino Cloud

Not a size error and not an outage. The service bounds the total in-flight request-body bytes across concurrent requests, and sheds rather than queues when admitting one more would exceed that budget. Honour the Retry-After header (one second) and retry the same batch unchanged; the pressure drains as other requests complete. If it recurs, lower ingest concurrency rather than batch size, since parallel large appends are what exhaust the budget. See Limits.

Node.js: an integer column rejects a number

Arrow int64 columns expect a JavaScript bigint, not a number. Pass 2021n, not 2021 (or coerce with BigInt(x)).

Rust: “cannot have two global allocators”

Infino installs mimalloc by default. If your process already sets a global allocator, turn Infino’s off:

A vector query in SQL is rejected

vector_search / hybrid_search expect the query vector as a comma-separated string literal ('0.12,0.04,...') or a SQL array literal ([0.12, 0.04, ...]), not a bare column or an unquoted list.

Deleted rows still show up when reading Parquet directly

A raw Parquet read returns the rows as stored in the superfiles and does not apply tombstones. For the live view (with update / delete applied), query through Infino rather than reading the files directly. See Open format.

See also

Last modified on August 25, 2026