3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

速?報!! typeormの @transaction() decoratorはazure functionsでは使えない

Last updated at Posted at 2021-11-12

今日ほぼ1日ここにハマりました。

@Transaction()
    async _update(id: string, status: string, @TransactionManager() manager?: EntityManager): Promise<void> {
        if ( manager === undefined) {
            throw new Error('DB not getting TransactionManager.');
        }
        const res = await manager.findOneOrFail(Job, id);
        res.status = status;
        res.save();
    }

要するには、上記のようなコード書いたら、
local開発やmcr.microsoft.com/azure-functions/node:3.0-node12のようなdocker使って開発するのは全然OKのだが、いざazure functionsにデプロイすると、意味不明な下記エラーが出ます。

2021-11-12T15:20:38Z   [Information]   Error:  TypeORMError: Connection is not established with mysql database
    at new TypeORMError (/home/site/wwwroot/node_modules/typeorm/error/TypeORMError.js:9:28)
    at /home/site/wwwroot/node_modules/typeorm/driver/mysql/MysqlDriver.js:668:22
    at new Promise (<anonymous>)
    at MysqlDriver.obtainMasterConnection (/home/site/wwwroot/node_modules/typeorm/driver/mysql/MysqlDriver.js:656:16)
    at MysqlQueryRunner.connect (/home/site/wwwroot/node_modules/typeorm/driver/mysql/MysqlQueryRunner.js:59:58)
    at MysqlQueryRunner.<anonymous> (/home/site/wwwroot/node_modules/typeorm/driver/mysql/MysqlQueryRunner.js:208:63)
    at step (/home/site/wwwroot/node_modules/tslib/tslib.js:143:27)
    at Object.next (/home/site/wwwroot/node_modules/tslib/tslib.js:124:57)
    at /home/site/wwwroot/node_modules/tslib/tslib.js:117:75
    at new Promise (<anonymous>)

transaction以外のDB操作が少なくて(唯一のDBの読み取り操作も別の原因で振る舞いが狂って、接続ができたと言う確信が持たなくて)、全然azure functionstypeormのせいだと思わずに、黙々接続情報やenvなどをデバッグしていた1日でした。

多分@Transaction()デコレータを使わずに、普通にconn.transactionすれば普通にいけると思うけど、今日はもうここまでにして。。。

別途azureとtypeormのgitにissueを出しますが、まずここにまとめます。同じ地雷を踏んで調べている人がいれば、少しでも時間節約できたら幸いです。

typeorm version 0.2.38

azure functions:
Runtime version:3.3.1.0,
FUNCTIONS_EXTENSION_VERSION: ~3,
Operating System: Linux

github actionsのAzure/functions-action@v1を使ってデプロイしている

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?