2
2

More than 1 year has passed since last update.

GoでDB接続からテーブル作成まで

Last updated at Posted at 2022-12-14

はじめに

Goの開発環境をDockerで構築していることを前提にすすめます
前日の記事でまとめているので、こちらを参考にしていただければと思います

やりかた

まずサーバーを立てます
今回はginの公式ドキュメントを参考にしました

その後、Postmanからサーバー(localhost:8080/ping)にアクセスして結果が返ってくることを確認します

image.png

image.png

DB接続の設定をします
今回はGormの公式ドキュメントを参考にしました

main.go
package main

import (
	"time"

	"gorm.io/driver/mysql"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

type Post struct {
	gorm.Model
	Weight int
	Date time.Time
}

func main() {

	dbConn := "DBのユーザー名:DBのパスワード@tcp("コンテナ名":3306)/DB名?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dbConn), &gorm.Config{})
	if err != nil {
    panic("failed to connect database")
  }

	db.AutoMigrate(&Post{})
	
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
}

次にdbのコンテナに入ります
コンテナ名はdbにしたので以下コマンドを実行します

$ docker exec -it db sh
docker-compose.yml
version: "3"
services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_USER: ${ROOTUSER}
      MYSQL_ROOT_PASSWORD: ${ROOTPASS}
      MYSQL_DATABASE: ${DATABASE}
      MYSQL_USER: ${USERNAME}
      MYSQL_PASSWORD: ${USERPASS}
      TZ: "Asia/Tokyo"
    volumes:
      - ./my.cnf:/etc/mysql/conf.d/my.cnf
    env_file:
      - .env
    container_name: db
    ports:
      - 3306:3306
.env
ROOTUSER=root
ROOTPASS=password
DATABASE=sampledb
USERNAME=docker
USERPASS=docker

dbのコンテナに入ったらDBに接続できることを確認します
確認が出来たらデータベースを作成します

$ mysql -u root -p
// password入力(.envのROOTPASS)
mysql > create database hoge;

テーブル作成

main.goのこの部分です

db.AutoMigrate(&Post{})

以下コマンドを実行してテーブルが作成されていることを確認できればOK

mysql > use hoge;
mysql > show tables;

image.png

2
2
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
2
2