#開発環境
- Ruby(3.0.0)
- Ruby on Rails(6.1.3)
- MySQL(8.2.3)
#エラーになった背景
heroku run rails db:migrate
上記のコマンドを入力した時に、下記のエラーが発生。
Mysql2::Error::ConnectionError: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
#エラーの原因
HerokuのデフォルトのデータベースがPostgresqlであるため、MySQLを使う場合は下準備が必要であるため。
##解決方法
#ClearDBというアドオンを使う
heroku addons:create cleardb:ignite
上記のコマンドを入力します。
すると、ClearDBというアドオンを使うことができるようになります。
#Mysqlへの接続
次に、Rails側でそのMySQLデータベースの情報を知る必要がありますが、Railsは
DATABASE_URL
という環境変数が設定されていると、その情報を使ってデータベースに接続するという仕様になっているため、
heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'
でMySQLの情報を設定してあげると、その情報を使ってMySQLに接続できる、ということになります。