LoginSignup
9
6

More than 1 year has passed since last update.

【JAWSDB設定】HerokuでMysqlを使う

Posted at
1 / 2

JAWSDB設定

バージョン
ruby '2.7.2'
rails '6.1.3.1'
mysql2 '8.0'

前提

  • Herokuへのログイン、及びアプリ作成は完了していること

アドオンを追加

  • Herokuの標準のDBはPostgresのため、MySQL使う場合はアドオンの追加が必要になる
  • MySQLのアドオンは知る限りClearDBとJawsDBの二種類ある(バージョンの違いにより使い分ける)

   1. ClearDB の MySQL のバージョンは 5.5系
   2. JawsDB の MySQL のバージョンは 8系

今回は、タイトルにもある通り、JawsDBを利用します。

$ heroku addons:create jawsdb:kitefin --version=8.0
# 自動で DB 接続情報が環境変数にセットアップされる
# ただし必要に応じて分解してアプリに適した形式の環境変数になおすこと

アドオンの確認

$ heroku addons

Add-on                           Plan     Price  State  
───────────────────────────────  ───────  ─────  ───────
jawsdb (jawsdb-amorphous-40408)  kitefin  free   created
 └─ as JAWSDB

確認方法とフォーマット

$ heroku config:get JAWSDB_URL
 > mysql://DB_USERNAME:DB_PASSWORD@DB_HOST:3306/DB_DATABASE
# 詳細は個人情報のため記載をしませんが上記の順でURLを確認することができます

JAWSDBの接続情報を環境変数にセット

$ heroku config:set DATABASE_NAME="*************"
$ heroku config:set DATABASE_PASSWORD="****************"
$ heroku config:set DATABASE_USERNAME="***************"
$ heroku config:set DATABASE_URL ="<JAWSDB_URLの値をそのまま設定>"

# RailsアプリはDBのadapterはmysql2なので変更が必要mysql:  mysql2:
# 環境変数と=の間はあけないエラーの原因になる
# 因みに削除する場合は $ heroku config:unset DATABASE_HOST
# DBの接続情報は画面から確認できる
  • JAWSDBの画面から接続情報確認 スクリーンショット 2022-01-03 15.20.05.png

heroku configファイルの確認

$ heroku config

# 設定後の結果
DATABASE_NAME:            ************* #英数字が入っている
DATABASE_PASSWORD:        ************* #英数字が入っている
DATABASE_URL:             mysql2://DB_USERNAME:DB_PASSWORD@DB_HOST:3306/DB_DATABASE
DATABASE_USERNAME:        *************
JAWSDB_URL:               mysql2://DB_USERNAME:DB_PASSWORD@DB_HOST:3306/DB_DATABASE
LANG:                     en_US.UTF-8
RACK_ENV:                 production
RAILS_ENV:                production
RAILS_LOG_TO_STDOUT:      enabled
RAILS_SERVE_STATIC_FILES: enabled
SECRET_KEY_BASE:          **************************************************** #特に変更などはしていない

JAWSDBとRailsを連携

Railsアプリ config/database.ymlに設定

  • 環境変数から読み込ませる
// config/database.yml

production:
  <<: *default
  database: <%= ENV['DATABASE_NAME'] %>
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  url: <%= ENV['DATABASE_URL'] %>

# Heroku configファイルと相違ないか内容の確認を行う

データベース作成

テーブルを作成

$ heroku run rake db:migrate

seedデータを作成

$ heroku run rails db:seed
# seedデータを作成した場合はこちらのコマンドを実行する

MysqlでJawsDBの中身を確認

$ mysql -u < Username > -p -h <Host > -D < Database >

以上。
完全に個人的なメモにはなっていますが、少しでも誰かの参考になればと思います。
間違っている点などあれば、ご指摘いただけると嬉しいです。

9
6
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
9
6