sasanoha blog

フリーランスSEの独り言

データ分析基盤構築入門のWebアプリケーションが起動しない(no such table: articles)

概要

こちらの書籍で紹介されているdockerコンテナが動かなかったのでメモ。 https://www.amazon.co.jp/dp/B075RTZ141/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

問題

下記のブログと同様に「no such table: articles」と表示され、アプリのマイグレーションができていない現象に遭遇。 https://qiita.com/ikedanoda/items/d3622833154a2b83fd9c

# マイグレーションコマンド
docker-compose exec go make migrate/up

# エラー
github.com/go-sql-driver/mysql/conncheck.go:29: undefined: syscall.Conn

対処

上記のエラーは、goのバージョンが1.9未満の時に生じる模様。 とりあえず、goを1.9.7に上げて対応。

# dockerコンテナの中に入る
docker-compose exec go bash

# goのインストールフォルダは/usr/local/goのため、削除して入れ直す
rm -rf /usr/local/go

wget https://dl.google.com/go/go1.9.7.linux-amd64.tar.gz
tar -zxvf go1.9.7.linux-amd64.tar.gz
mv go /usr/local/go

# 動作確認(1.9.7と表示されればOK)
go version

# マイグレーション
make migrate/up

最後に

動作はこれから確認するので、正しく動いているかは未検証。

goのバージョンをアップグレードするより、 goのバージョンと乖離していないブランチをgo-sql-driverを落とした方がいい気がする。 (おそらくgo-sql-driverの最新版のリポジトリのみを見ている)

dockerはデリバリーする分にはいいけど、抽象レイヤーが多すぎて問題があるとよー分からん。 こっちはdockerを四六時中触っているわけでないし、 環境を構築する過程が吹っ飛んでで辛い。

あと、他言語を置いておいてgoを使う必要性も分からんので勉強する。

とりあえず、動いたからOK。