chroma-core/chroma · error
Could not connect to database ${database} for tenant ${tenan
Error message
Could not connect to database ${database} for tenant ${tenant}. Are you sure it exists? Underlying error:
${error} What it means
Second half of validateTenantDatabase(): after the tenant check passes, AdminClient.getDatabase({ name, tenantName }) is called; a non-ChromaConnectionError failure (i.e., the server responded, typically 404) is wrapped with this message. It means the tenant exists but the database does not exist under that tenant on this server.
Source
Thrown at clients/js/packages/chromadb-core/src/utils.ts:81
try {
await adminClient.getTenant({ name: tenant });
} catch (error) {
if (error instanceof ChromaConnectionError) {
throw error;
}
throw new Error(
`Could not connect to tenant ${tenant}. Are you sure it exists? Underlying error:
${error}`,
);
}
try {
await adminClient.getDatabase({ name: database, tenantName: tenant });
} catch (error) {
if (error instanceof ChromaConnectionError) {
throw error;
}
throw new Error(
`Could not connect to database ${database} for tenant ${tenant}. Are you sure it exists? Underlying error:
${error}`,
);
}
}
export function isBrowser() {
return (
typeof window !== "undefined" && typeof window.document !== "undefined"
);
}
function arrayifyParams(
params: BaseRecordOperationParams,
): MultiRecordOperationParams {
return {
ids: toArray(params.ids),
embeddings: params.embeddingsView on GitHub (pinned to aecdd12c8a)
Solutions
- Create the database under the correct tenant: await adminClient.createDatabase({ name: database, tenantName: tenant }) (idempotent for existing databases).
- List databases for the tenant to verify: (await adminClient.listDatabases({ tenantName: tenant })).forEach(d => console.log(d.name)).
- Confirm the database was not created under a different tenant (databases are tenant-scoped, not global).
- Verify tenant/database strings for typos and case sensitivity.
Example fix
// before
await adminClient.setDatabase({ database: "prod-db" }); // never created -> throws
// after
await adminClient.createDatabase({ name: "prod-db", tenantName: "acme" });
await adminClient.setDatabase({ database: "prod-db" }); Defensive patterns
Strategy: validation
Validate before calling
const ensureDatabase = async (admin: AdminClient, tenant: string, database: string) => {
try {
await admin.getDatabase({ name: database, tenantName: tenant });
} catch (e) {
if (e instanceof ChromaConnectionError) throw e;
await admin.createDatabase({ name: database, tenantName: tenant });
}
};
await ensureDatabase(admin, "acme", "prod-db"); Try / catch
try {
await adminClient.setDatabase({ database: "prod-db" });
} catch (e) {
const msg = e instanceof Error ? e.message : String(e);
if (msg.startsWith("Could not connect to database")) {
throw new Error(`Database 'prod-db' missing under tenant — createDatabase({ name, tenantName }) first`, { cause: e });
}
throw e;
} Prevention
- Provision databases right after tenants in setup scripts; databases are tenant-scoped, so always pass tenantName.
- Run a health check that calls getDatabase for each configured tenant/database pair at app startup.
When it happens
Trigger: new ChromaClient({ tenant, database: 'prod-db' }) on first init(), adminClient.setTenant({ tenant, database: 'prod-db' }), or adminClient.setDatabase({ database: 'prod-db' }) where the database was never created via adminClient.createDatabase({ name: 'prod-db', tenantName: tenant }) or was created under a different tenant.
Common situations: Creating the tenant but forgetting the database in setup scripts; assuming default-tenant databases are visible under a custom tenant; wrong tenantName when creating the database; stale database names after renaming.
Related errors
- Could not connect to tenant ${tenant}. Are you sure it exist
- Your API key does not have access to any DBs for tenant ${th
- Your API key is scoped to more than 1 DB. Please provide a D
- The requested resource could not be found
- Could not connect to a Chroma server. Are you sure it is run
AI-assisted analysis of chroma-core/chroma@aecdd12c8a (2026-08-16).
Data as JSON: /api/errors/18bd3f17fc4dbb4b.
Report an issue: GitHub.