がべーじこれくしょん

技術系とかいろいろ

Rails with docker-composeで'/tmp/mysql.sock'がねえよと怒られたとき

執筆・創作活動への支援をぜひお願いします🙏
Buy Me A Coffee

この問題、よくあるみたいなのでメモ。

1. mysql.sockがあるかどうか疑う

mysql.sockについてですが、まれに自動で作成されない場合があるそうです。そのため、dbコンテナ上であらかじめ手動で作成してから再度試してみましょう。

$ sudo touch /var/lib/mysql/mysql.sock
$ sudo chown mysql:mysql /var/lib/mysql/mysql.sock

2. config/database.ymlの設定を疑う

そもそもソケットいらない?

docker-composeを用いてweb用とdb用のコンテナをそれぞれ分けて運用している場合、config/database.ymlhostdbとコンテナを明示する必要があります。(当たり前かもしれない…)

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: password
  host: db
 
development:
  <<: *default
  database: myapp_development
 
test:
  <<: *default
  database: myapp_test

passwordの空欄を許可している場合は、passwordの値は空欄で構いません。