> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> Common Infino errors and their fixes, covering in-memory update limits, schema and vector dimension mismatches, SQL query syntax, and language-specific gotchas.

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://`:

```python theme={null}
db = infino.connect("./data")   # 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.

## 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:

```toml theme={null}
infino = { version = "0.1", default-features = false }
```

## 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](/guides/parquet-interop).

## See also

* [FAQ](/faq)
* [Tables](/guides/tables)
* [Storage](/guides/storage)
