1
0

Cloud Run + Gorm + Cloud SQLで詰まった

Posted at

前提

Go + Echo + Gormで作成したWebアプリをGoogle Cloud Runにデプロイしました。その際に、Cloud SQLとの接続に詰まりました。

詰まったところ

DB接続

DBが中々接続できずに公式ドキュメントを読みましたが、
https://cloud.google.com/sql/docs/mysql/samples/cloud-sql-mysql-databasesql-connect-connector?hl=ja
以下の2つのライブラリを用いるものでした。

import (
    "cloud.google.com/go/cloudsqlconn"
    "github.com/go-sql-driver/mysql"
)

私の場合にはGormのSQLドライバーを使っていたので、大幅な改修が必要そうなこの方法を回避したかったので調べてみると以下のページに解決方法が載ってました。
https://qiita.com/sky0621/items/d91ffd1faf63dbf34e77
googleのドライバー以外から接続するときにはunixでソケットとCloud SQLのファイル名?(接続名)を指定して接続するみたいです。

db.go
var (
		dbUser = os.Getenv("MYSQL_USER")
		dbPwd  = os.Getenv("MYSQL_PW")
		dbHost = os.Getenv("MYSQL_HOST") // project_id:region/db_instance_name
		socket = "/cloudsql"
		dbName = os.Getenv("MYSQL_DB")
	)

	path := fmt.Sprintf("%s:%s@unix(%s/%s)/%s?parseTime=true",
		dbUser,
		dbPwd,
		socket,
		dbHost,
		dbName,
	)

しかしここでまたエラー。具体的なエラーは忘れてしまいましたが、unixが接続名からファイルを見つけられない、的なエラーでした。どうやらCloud SLQに接続するには、SQL admin APIを有効にする必要があるようです。
https://console.cloud.google.com/apis/enableflow?apiid=sqladmin&_ga=2.66654765.-2015653629.1511582598&project=crested-century-425512-p0

結果

DBに接続できました。

1
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
1
0