Search code examples
oracletypeorm

TypeORM migration:run Oracle Alias Issue


I'm using TypeORM with an Oracle DB. When I add a migration and run typeorm migration:run I get this output:

bash-4.4$ typeorm migration:run
query: SELECT "TABLE_NAME" FROM "USER_TABLES" WHERE "TABLE_NAME" = 'migrations'
query: SELECT * FROM "migrations" "migrations" ORDER BY "id" DESC
typeorm migration:run

Runs all pending migrations.

Options:
  -h, --help         Show help                                         [boolean]
  --connection, -c   Name of the connection on which run a query.
                                                            [default: "default"]
  --transaction, -t  Indicates if transaction should be used or not for
                     migration run. Enabled by default.     [default: "default"]
  --config, -f       Name of the file with connection configuration.
                                                          [default: "ormconfig"]
  -v, --version      Show version number                               [boolean]

[Error: ORA-24422: error occurred while trying to destroy the Session Pool] {
  errorNum: 24422,
  offset: 0
}

I tried running the last query listed with typeorm query "select * from \"migrations\" \"migrations\" order by \"id\" desc;" but then I got this error:

bash-4.4$ typeorm query "select * from \"migrations\" \"migrations\" ordery by \"id\" desc;"
Running query: select * from "migrations" "migrations" ordery by "id" desc;
Error during query execution:
QueryFailedError: ORA-00933: SQL command not properly ended
    at new QueryFailedError (/opt/app-root/src/.npm-global/lib/node_modules/typeorm/error/QueryFailedError.js:11:28)
    at handler (/opt/app-root/src/.npm-global/lib/node_modules/typeorm/driver/oracle/OracleQueryRunner.js:175:45)
    at Connection.custExecuteCb (/opt/app-root/src/bridge-server/node_modules/oracledb/lib/connection.js:103:7) {
  message: 'ORA-00933: SQL command not properly ended',
  errorNum: 933,
  offset: 40,
  name: 'QueryFailedError',
  query: 'select * from "migrations" "migrations" ordery by "id" desc;',
  parameters: []
}

I think the issue is the way TypeORM uses the table name alias. If I remove the second \"migrations\" above the query works fine.

Does anyone know what I should do? Thanks for your help!


Solution

  • I ran into the same problem, which was caused by a schema configuration.

    The output SELECT * FROM "myschema"."migrations" order by "id" DESC ; generated by typeorm does not work. It seems that there is an error in the statement generation, because the statement SELECT * FROM myschema."migrations" order by "id" DESC ; does work.

    I fixed the issue by removing the schema.

    Edit: The statement generation is correct, but case sensitive... so when I've fixed the case of my schema it also works with the generated statement SELECT * FROM "myschema"."migrations" order by "id" DESC ;