今回は、Herokuでデプロイ後に本番環境でエラーが発生したため、ログで原因を確認すると、「そのようなカラムはないよ」というようなエラー内容となっていました。
そこで、Herokuでデプロイ後のどのようにすれば、データベースの内容について確認することができるかについて記事を書いていきたいと思います。
よろしくお願いします。
確認までの一連の流れ
確認する為には、ターミナルでコマンド操作をしていきます。
①Heroku CLI(コマンドラインツール)のインストール
②Herokuにログイン
③コンソールを開く
④DBとの接続情報の確認
⑤DB内容について確認
ターミナルのホームディレクトリにて、下記のコマンドを実行して、Heroku CLIをインストールします。
brew install heroku/brew/heroku
②Herokuにログイン
下記のコマンドを実行して、herokuへのログインする。
アカウント作成時のメールアドレス、パスワードを入力してログインする。
heroku login --interactive
③コンソールを開く
コンソールを開きます。
heroku run rails console
④DBとの接続情報の確認
まず、DBとの接続情報について確認します。
ActiveRecord::Base.connection_config
上記のコマンドを実行すると、このような表示がされます。
[1] pry(main)> ActiveRecord::Base.connection_config
=> {:adapter=>"mysql2",
:encoding=>"utf8",
:pool=>5,
:username=>"b5××××××××××",
:password=>"24×××××××",
:socket=>"/tmp/mysql.××××",
:database=>"heroku_6d×××××××××",
:reconnect=>"true",
:host=>"us-cdbr-××××-××××××××××"}
次に、テーブルの状況について確認していきます。
ActiveRecord::Base.connection.tables
上記のコマンドを実行すると、このような表示がされます。
[2] pry(main)> ActiveRecord::Base.connection.tables
D, [2021-05-21T12:45:32.719529 #4] DEBUG -- : (2.3ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 21××××××
=> ["ar_internal_metadata", "schema_migrations", "targets", "trainings", "users"]
テーブルは、「targets", "trainings", "users」ということがわかりました。
最後に、カラム情報について確認していきます。
Training.inspect
上記のコマンドを実行すると、このような表示がされます。
[3] pry(main)> Training.inspect
=> "Training(id: integer, date: date, category_id: integer, training_menu: text, point: text, evaluation: text, user_id: integer, created_at: datetime, updated_at: datetime)"
これで、カラム内容について確認することができました。
このような手順でHerokuでデプロイ後のデータベースの内容の確認を確認することができました。
*参考記事
teratail.com