Cloud SQL for MySQLへの接続にはまった為、メモとして残したいと思います。
#前提条件
- Node.js v10.x
- Sequelize v4.42.0
- Cloud SQL for MySQL v5.7
- GAEとCloud SQL for MySQLは同じプロジェクトであること(パブリックIPが設定済みであること)
#Sequelizeの設定例
const sequelize = new Sequelize('database', 'username', 'password', {
dialect: 'mysql',
host: 'localhost',
dialectOptions: {
socketPath: `/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}`,
},
})
GAEからCloud SQLに接続する際は基本的にCloud SQL Proxyを使用して接続するみたいです。。
その為、デフォルトのTCPソケット接続ではなくUNIXソケット接続に切り替えます。
重要なのはhostとdialectOptions内のsocketPathです。
hostはデフォルトがlocalhostなので未設定でもいいです。
dialectOptions内のsocketPathには「/cloudsql/」という文字列の後に
Cloud SQLのインスタンス接続名を入れます。
インスタンス接続名はCloud SQLの [概要] ページのプロパティに記載されています。