LoginSignup
0
0

More than 3 years have passed since last update.

can't connect to local mysql server through socket '/tmp/mysql.sock' (2) への対処

Posted at

docker-compose上でrailsとmysqlを使ったwebアプリケーションをherokuを利用してデプロイする時にはまったエラーへのアプローチを忘れないための備忘録。

なお、heroku はターミナル からの操作ではなく、heroku のwebサイト上で操作する。

エラーではsocketである'/tmp/mysql.sock'が見つからないと言われているが、明らかに存在しているし、gitignoreにも入ってはいない。

念のため、rails側でのデータベースの設定として、これが必須かは分からないが、下記のsocket:の部分を追記した。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: 
  host: localhost
  socket: /tmp/mysql.sock ←ここ

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

だとしたら、heroku側での設定が間違えていると思いdbと接続するのに必要なherokuの環境変数をいじってみることにする。

これにいいヒントをくれたのが
https://xyk.hatenablog.com/entry/2014/09/29/184727
の記事である。

ただし、今回はターミナル上からではなく、herokuのwebサイト上から操作する必要がある。ターミナルからの操作もやってしまってめちゃくちゃになってしまったので、ここで闇雲に記事通りに進めればいいということでもないと学んだ、、、

まず、herokuのwebサイト上からそもそもcleardbのダウンロード、インストールをしなければいけない。

これは、herokuのサイト上のResourcesのadd-onsから探してあげれば良い。

4E2D0806-FF15-4940-8164-409484F0A3F6_1_105_c.jpeg

次に上記画像のcleardb_database_url と database_url(多分最初はないから作る) の部分をそれぞれ自分の場合 mysql2 を使用しているのでそのように変更する。valuesの部分はcleardb_database_urlの場合はadd-onでインストールした時に自動的にできている。database_urlの場合はcleardb_database_urlのものをコピペしてあげれば良い。

これでできた。

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