typeorm/typeorm · error · NamedPlaceholdersNotSupportedError

Your driver does not support named placeholders.

Error message

Your driver does not support named placeholders.

What it means

Error "Your driver does not support named placeholders." thrown in typeorm/typeorm.

Source

Thrown at src/driver/cordova/CordovaQueryRunner.ts:59

    async afterMigration(): Promise<void> {
        await this.query(`PRAGMA foreign_keys = ON`)
    }

    /**
     * Executes a given SQL query.
     *
     * @param query
     * @param parameters
     * @param useStructuredResult
     */
    async query(
        query: string,
        parameters?: any[] | ObjectLiteral,
        useStructuredResult = false,
    ): Promise<any> {
        if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()
        if (parameters && !Array.isArray(parameters))
            throw new NamedPlaceholdersNotSupportedError()

        const databaseConnection = await this.connect()

        this.driver.dataSource.logger.logQuery(query, parameters, this)
        await this.broadcaster.broadcast("BeforeQuery", query, parameters)

        const broadcasterResult = new BroadcasterResult()
        const queryStartTime = Date.now()

        try {
            const raw = await new Promise<any>((ok, fail) => {
                databaseConnection.executeSql(
                    query,
                    parameters,
                    (raw: any) => ok(raw),
                    (err: any) => fail(err),
                )
            })

View on GitHub (pinned to 04ff4daedc)

Solutions

  1. Use positional (?) placeholders instead of named parameters in raw queries for the cordova driver.

When it happens

Trigger: A raw query containing named placeholders (e.g. `:id`) is executed through the Cordova driver, which only supports positional `?` parameters.

Common situations: See trigger scenarios.


AI-assisted analysis of typeorm/typeorm@04ff4daedc (2026-08-03). Data as JSON: /data/errors/2f9f31df8c8c19cb.json. Report an issue: GitHub.