rails初心者です。
自作のアプリケーションをDockerで開発、Herokuにデプロイした際にMySQLの設定ではまったのでメモしておきます。
環境
Windows10 -> docker-compose 上で開発
Rails 5.0.6
gem 'mysql2', '>= 0.3.18', '< 0.5'
陥った状況
ネットにある情報を頼りにHerokuにアカウント登録→デプロイまでは何とかできるようになる。 (ここにたどり着くまでにそもそもGitの使い方ではまった)
無事アプリケーションが立ち上がるが、DBに接続するページでエラーが出てしまう。
ログを追うと、
#<Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)>
Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "pool"=>5, "username"=>"user", "password"=>"PassWord", "socket"=>"/var/run/mysqld/mysqld.sock", "database"=>"app_production"}, {:charset=>"utf8"}
(If you set the charset manually, make sure you have a matching collation)
というエラーが!
調べたところ、これは何らかの理由でRailsがMySQLに接続できなかったということらしい。
解決法
自分の場合は、herokuの環境設定に以下が設定されていないことが原因でした。
CLEARDB_DATABASE_URL: mysql2://~~~~~
DATABASE_URL: mysql2://~~~~~
特に、DATABASE_URL についてはデフォルトで項目自体が存在しなかったため、これが足りてないということに気づくのに随分かかりました。
(気づけば、「そりゃそうだよね」となるのですが)
追加するときは、heroku config:set ~~
とコマンドからでも良いのですが、個人的にはブラウザから触ったほうがミスりにくいかなと思います。
余談
ここに気付くまでに色々はまりすぎて、もういっそherokuやめてVPSにデプロイしよう!となったのですが、そっちはそっちではまっています。笑
できてしまえばherokuのほうが全然ラクですね。