現象
CircleCiでdb:create
を実行すると
Can't connect to local MySQL server through socket
というエラーになる。
原因
原因はdatabase.yml
でhostをlocalhost
としていること。
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
host: localhost
対策
以下のように修正すると通るようになる。
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
host: <%= ENV['DB_HOST'] %> ←を修正
hostを環境変数を参照するように設定。
config.yml
version: 2
jobs:
build:
docker:
- image: circleci/ruby:2.5.1-node-browsers
environment: ←を追加
DB_HOST: 127.0.0.1 ←を追加
- image: circleci/mysql:5.7
CircleCiの設定ファイルにdatabase.yml
で修正した環境変数を追加する。