n8n-io/n8n · error · TypeORMError

sqlit driver does not support change comment.

Error message

sqlit driver does not support change comment.

What it means

SQLite has no native table-comment support, so AbstractSqliteQueryRunner.changeTableComment() unconditionally throws TypeORMError on call. There is no workaround on this driver.

Source

Thrown at packages/@n8n/typeorm/src/driver/sqlite-abstract/AbstractSqliteQueryRunner.ts:1953

	/**
	 * Escapes given table or view path. Tolerates leading/trailing dots
	 */
	protected escapePath(target: Table | View | string, disableEscape?: boolean): string {
		const tableName =
			InstanceChecker.isTable(target) || InstanceChecker.isView(target) ? target.name : target;
		return tableName
			.replace(/^\.+|\.+$/g, '')
			.split('.')
			.map((i) => (disableEscape ? i : `"${i.replace(/"/g, '""')}"`))
			.join('.');
	}

	/**
	 * Change table comment.
	 */
	changeTableComment(tableOrName: Table | string, comment?: string): Promise<void> {
		throw new TypeORMError(`sqlit driver does not support change comment.`);
	}
}

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Remove `comment` from entities used with SQLite.
  2. Branch schema setup on driver type — only set comments for drivers that support them.
  3. Store documentation elsewhere (a metadata table, code comments) if you need it on SQLite.

Example fix

// before
@Entity({ comment: 'Application users' })
class User {}

// after (for SQLite-targeted entities)
@Entity()
class User {}
Defensive patterns

Strategy: type-guard

Validate before calling

function supportsTableComments(ds: DataSource): boolean {
  const t = ds.options.type;
  return t !== 'sqlite' && t !== 'sqlite-pooled' && t !== 'better-sqlite3';
}

if (supportsTableComments(dataSource)) {
  await queryRunner.changeTableComment(table, 'users');
}

Type guard

const driverSupportsTableComments = (ds: DataSource): boolean =>
  ds.options.type !== 'sqlite' &&
  ds.options.type !== 'sqlite-pooled' &&
  ds.options.type !== 'better-sqlite3';

Prevention

When it happens

Trigger: Calling queryRunner.changeTableComment(table, comment) on a SQLite DataSource, or an entity declaring a comment that TypeORM tries to apply during sync/migration.

Common situations: Entities with `@Entity({ comment: '...' })` synced against SQLite; cross-driver schema code that sets comments; code ported from Postgres/MySQL.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/9dd79b6ca8d4bd3a. Report an issue: GitHub.