App EngineでNode.jsアプリケーションを動作させるときにTypeORMを使ってCloud SQLに接続する方法。
スタンダード環境の場合、Cloud SQLに内部IPで接続することができない。
App Engine から Cloud SQL への接続 | Cloud SQL for MySQL
そのかわり、上記にも書かれているように Unixドメインソケットを使って接続することができる。具体的には /cloudsql/INSTANCE_CONNECTION_NAME
というもの。INSTANCE_CONNECTION_NAMEはCloud SQLの詳細にあるインスタンス接続名という値。ホスト名とポートを設定するかわりにこのソケットのパスを設定する。
TypeORMで接続設定を作る場合は下記のようにするらしい。
extra: {
socketPath: `/cloudsql/${functions.config().db.conn}`,
}
参考
【2019年10月版】TypeGraphQL なら ORM は TypeORM でしょう。 - Qiita
僕の場合は接続設定をTypeORMで用意されている環境変数で設定していたので、下記のようにして設定することができた。
TYPEORM_DRIVER_EXTRA='{"socketPath": "パス"}'
代わりにTYPEORM_HOSTとTYPEORM_PORTを削除する。これで接続できた。
ちなみに、このTYPEORM_DRIVER_EXTRAは文字コードの指定にも使うことができる。絵文字を使う場合はこれを指定しておかないとエラーになる。
TYPEORM_DRIVER_EXTRA='{"charset": "utf8mb4"}'
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント