mem0ai/mem0 · error · Exception

Insert operation failed: {response.status.error}

Error message

Insert operation failed: {response.status.error}

What it means

Generic Exception raised in Databricks insert when the SQL statement executed against the SQL warehouse does not reach state SUCCEEDED; response.status.error carries the warehouse's error text (syntax, type mismatch, constraint, permission). The except block logs and re-raises, so the original statement execution failures surface wrapped with this message.

Source

Thrown at mem0/vector_stores/databricks.py:458

        insert_sql = f"INSERT INTO {self.fully_qualified_table_name} ({', '.join(self.column_names)}) VALUES {', '.join(value_tuples)}"

        # Execute the insert
        try:
            response = self.client.statement_execution.execute_statement(
                statement=insert_sql,
                warehouse_id=self.warehouse_id,
                wait_timeout="30s",
                parameters=params,
            )
            if response.status.state.value == "SUCCEEDED":
                logger.info(
                    f"Successfully inserted {num_items} items into Delta table {self.fully_qualified_table_name}"
                )
                return
            else:
                logger.error(f"Failed to insert items: {response.status.error}")
                raise Exception(f"Insert operation failed: {response.status.error}")
        except Exception as e:
            logger.error(f"Insert operation failed: {e}")
            raise

    def search(self, query: str, vectors: list, top_k: int = 5, filters: dict = None) -> List[MemoryResult]:
        """
        Search for similar vectors or text using the Databricks Vector Search index.

        Args:
            query (str): Search query text (for text-based search).
            vectors (list): Query vector (for vector-based search).
            top_k (int): Maximum number of results.
            filters (dict): Filters to apply.

        Returns:
            List of MemoryResult objects.
        """
        try:

View on GitHub (pinned to 001c235229)

Solutions

  1. Read response.status.error in the exception message: it names the actual server-side cause — fix that first (schema, permissions, or data).
  2. Recreate/repair the table/index if the embedding dimension changed so inserts match the declared schema.
  3. Ensure the SQL warehouse is running and the 30s wait_timeout suits your batch size; split large inserts into smaller batches.
  4. Catch the exception per-batch and retry only failed batches instead of failing the whole add() call.

Example fix

# before
try:
    store.insert(vectors=[v1, v2, ...], payloads=[p1, p2, ...])
except Exception as e:
    raise  # whole batch lost, cause hidden

# after
for chunk in chunks(items, 100):
    try:
        store.insert(vectors=[c.vector for c in chunk], payloads=[c.payload for c in chunk])
    except Exception as e:
        logger.error("databricks insert failed for chunk: %s", e)
        raise
Defensive patterns

Strategy: retry

Validate before calling

def validate_rows_for_insert(rows, expected_dim: int) -> None:
    for r in rows:
        v = r.get("vector")
        if not v or len(v) != expected_dim:
            raise ValueError(f"vector length {len(v) if v else 0} != table dimension {expected_dim}")

validate_rows_for_insert(rows, store.embedding_dimension)

Try / catch

import time

for attempt in range(3):
    try:
        store.insert(vectors=vectors_chunk, payloads=payloads_chunk)
        break
    except Exception as e:
        msg = str(e)
        if "Insert operation failed" in msg and attempt < 2:
            time.sleep(2 ** attempt)  # transient warehouse issue; retry chunk
            continue
        raise

Prevention

When it happens

Trigger: Calling insert()/add with rows whose values fail server-side validation: dimension mismatch between the vector column and payload, a truncated/malformed embedding, string values containing unescaped quotes breaking the generated SQL, or the warehouse being terminated mid-statement (wait_timeout='30s' exceeded).

Common situations: Switching embedding models so vector length no longer matches the Delta table schema; payload metadata with special characters; warehouse auto-stop terminating during bulk inserts; insufficient ACLs on the destination table.

Related errors


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/085dba726307755a. Report an issue: GitHub.