nocodb/nocodb · warning · Error
SchemaList : Not supported for sqlite
Error message
SchemaList : Not supported for sqlite
What it means
Thrown unconditionally by SqliteClient.schemaList. SQLite is a single-database, schema-less engine — it has no concept of separate schemas within a database file. The method is implemented only to satisfy the shared SqlClient interface contract; calling it always throws. The code after the throw (log + return result) is dead — unreachable.
Source
Thrown at packages/nocodb/src/db/sql-client/lib/sqlite/SqliteClient.ts:333
}
}
//result.data.list = response;
} catch (e) {
log.ppe(e, _func);
throw e;
}
log.api(`${_func}: result`, result);
return result;
}
async schemaList(args: any = {}) {
const _func = this.schemaList.name;
const result = new Result();
log.api(`${_func}:args:`, args);
throw new Error('SchemaList : Not supported for sqlite');
log.api(`${_func}: result`, result);
return result;
}
/**
*
* @param {Object} - args - Input arguments
* @param {Object} - args.tn -
* @returns {Object[]} - columns
* @property {String} - columns[].tn
* @property {String} - columns[].cn
* @property {String} - columns[].dt
* @property {String} - columns[].dtx
* @property {String} - columns[].np
* @property {String} - columns[].ns -
* @property {String} - columns[].clen -
* @property {String} - columns[].dp -View on GitHub (pinned to d3caaf4e89)
Solutions
- Guard callers: check the client type and skip schemaList for sqlite3 before invoking it.
- If schema enumeration is needed, treat SQLite as having a single implicit schema rather than calling this method.
Example fix
// before
const schemas = await sqlClient.schemaList();
// after
const schemas = sqlClient.clientType === 'sqlite3' ? [{ name: 'main' }] : await sqlClient.schemaList(); Defensive patterns
Strategy: validation
Validate before calling
async function safeSchemaList(sqlClient: any) {
if (sqlClient.clientType === 'sqlite3') {
return [{ schema_name: 'main' }]; // SQLite has a single implicit schema
}
return sqlClient.schemaList();
} Type guard
function isSqliteClient(sqlClient: any): boolean {
return sqlClient?.clientType === 'sqlite3';
} Try / catch
try {
const schemas = await sqlClient.schemaList();
} catch (e) {
if (e.message === 'SchemaList : Not supported for sqlite') {
return [{ schema_name: 'main' }];
}
throw e;
} Prevention
- Check clientType === 'sqlite3' before calling schemaList and short-circuit with a single-schema result.
- Do not route SQLite connections through generic schema-enumeration flows designed for PostgreSQL/MySQL.
- Document that SQLite workspaces always use the implicit 'main' schema.
When it happens
Trigger: Any code path that calls schemaList() on a SqliteClient instance: schema introspection UI, migration tooling, or sync logic that iterates databases and calls schemaList uniformly across client types without checking the dialect.
Common situations: A workspace configured with SQLite that triggers a generic schema-listing flow designed for PostgreSQL/MySQL; tooling that does not short-circuit SQLite before calling schemaList.
Related errors
- SQLite database file not found at path: ${this.config.meta.d
- Sources table not found
- Integrations table not found
- Looks like you are using an older version of NocoDB. Please
- Invalid data type: ${dt}
AI-assisted analysis of nocodb/nocodb@d3caaf4e89 (2026-08-12).
Data as JSON: /api/errors/3b5d52e2d50a8813.
Report an issue: GitHub.