mem0ai/mem0 · error · Error

Oracle DB client driver version ${this.oracledb.oracleClient

Error message

Oracle DB client driver version ${this.oracledb.oracleClientVersionString} not supported, must be >=23.4 for vector support

What it means

Vector search requires Oracle client 23.4 or newer. This check applies only to the node-oracledb thick mode (this.oracledb.thin === false): the adapter decodes oracleClientVersion as major*100000000 + minor*100000 and throws if the installed thick client library is older than 23.4. Thin mode (pure JS, the default in recent drivers) skips this check.

Source

Thrown at mem0-ts/src/oss/src/vector_stores/oracledb.ts:487

      const result = await fn(connection);
      if (commit) await connection.commit();
      return result;
    } catch (err) {
      await connection.rollback();
      throw err;
    } finally {
      await connection.close();
    }
  }

  private async assertVectorSupport(): Promise<void> {
    if (!this.oracledb.thin) {
      const [major, minor] = [
        Math.floor(this.oracledb.oracleClientVersion / 100000000),
        Math.floor(this.oracledb.oracleClientVersion / 100000) % 100,
      ];
      if (major < 23 || (major === 23 && minor < 4)) {
        throw new Error(
          `Oracle DB client driver version ${this.oracledb.oracleClientVersionString} ` +
            "not supported, must be >=23.4 for vector support",
        );
      }
    }

    const version = await this.withConnection(
      async (connection) => connection.oracleServerVersionString,
    );
    const [major, minor] = version.split(".").map(Number);
    if (major < 23 || (major === 23 && minor < 4)) {
      throw new Error(
        `Oracle DB version ${version} not supported, must be >=23.4 for vector support`,
      );
    }
  }

  private createIndexDdl(): string {

View on GitHub (pinned to 001c235229)

Solutions

  1. Upgrade the Oracle Instant Client / client libraries to 23.4+ (23ai client) on the machine running Node.
  2. Switch to thin mode (default) — remove oracledb.initOracleClient() so the pure-JS driver is used and this check no longer applies (verify server is still 23.4+).
  3. In Dockerfiles, replace FROM images with oraclelinux:9 + instantclient 23 or the official 23ai images.
  4. Print oracledb.oracleClientVersionString at startup to confirm which client thick mode loaded.

Example fix

# before (Dockerfile)
FROM node:20
RUN apt-get install -y libaio1 && curl -o instantclient.zip https://.../instantclient-2113000.zip

# after
FROM node:20
RUN curl -o instantclient.zip https://.../instantclient-2340000.zip && unzip ...
Defensive patterns

Strategy: fallback

Validate before calling

function checkThickClient(oracledb: any): void {
  if (oracledb.thin) return; // thin mode, no client library needed
  const major = Math.floor(oracledb.oracleClientVersion / 100000000);
  const minor = Math.floor(oracledb.oracleClientVersion / 100000) % 100;
  if (major < 23 || (major === 23 && minor < 4)) {
    throw new Error(`Thick client ${oracledb.oracleClientVersionString} < 23.4; upgrade Instant Client or stay in thin mode`);
  }
}

Try / catch

try { await store.initialize(); } catch (e) { if (e instanceof Error && e.message.includes('client driver version')) { /* rebuild image with Instant Client 23ai, or drop initOracleClient() to use thin mode */ } else throw e; }

Prevention

When it happens

Trigger: Initializing OracleDB with oracledb.initOracleClient() pointing at an Instant Client < 23.4 (e.g. 19c or 21c client); CI images bundling an older Instant Client; a host with an old ORACLE_HOME picked up by thick-mode initialization.

Common situations: Enterprise hosts standardized on Oracle Client 19c/21c for legacy apps; Docker images based on older Instant Client packages; switching from thin to thick mode for features like advanced authentication and inheriting an old client.

Related errors


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