Herokuでデプロイ後のデータベースの内容確認のやり方について

今回は、Herokuでデプロイ後に本番環境でエラーが発生したため、ログで原因を確認すると、「そのようなカラムはないよ」というようなエラー内容となっていました。

そこで、Herokuでデプロイ後のどのようにすれば、データベースの内容について確認することができるかについて記事を書いていきたいと思います。

よろしくお願いします。

確認までの一連の流れ

確認する為には、ターミナルでコマンド操作をしていきます。

①Heroku CLI(コマンドラインツール)のインストール

②Herokuにログイン

③コンソールを開く

④DBとの接続情報の確認

⑤DB内容について確認

①Heroku CLI(コマンドラインツール)のインストール

ターミナルのホームディレクトリにて、下記のコマンドを実行して、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