【Rails】DBフィールド追加後にHerokuでページが表示されない時の解決法
データベースにname, phone_number, description というフィールドを以下のコードで追加したが
$ rails g migration AddExtraFieldsToUser name:string phone_number:string description:string
herokuにpushした後にDBに不具合があるからか、ページが表示されずに、something went wrongというエラーメッセージが出る。
そこで以下のコマンド
$ heroku run rake db:migrate
を実行すると、数行に渡るログが表示され
Running rake db:migrate on ⬢ app-name... up, run.4568 (Free) (3.0ms) 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 = 2147483 (3.0ms) SELECT GET_LOCK('7254395911760070465', 0) (2.8ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC Migrating to AddExtraFieldsToUser (20180616054916) == 20180616054916 AddExtraFieldsToUser: migrating ============================= -- add_column(:users, :name, :string) (9.2ms) ALTER TABLE `users` ADD `name` varchar(255) -> 0.0098s -- add_column(:users, :phone_number, :string) (6.3ms) ALTER TABLE `users` ADD `phone_number` varchar(255) -> 0.0066s -- add_column(:users, :description, :string) (6.8ms) ALTER TABLE `users` ADD `description` varchar(255) -> 0.0072s == 20180616054916 AddExtraFieldsToUser: migrated (0.0240s) ==================== (3.4ms) BEGIN SQL (2.9ms) INSERT INTO `schema_migrations` (`version`) VALUES ('20180616054916') (2.6ms) COMMIT ActiveRecord::InternalMetadata Load (2.9ms) SELECT `ar_internal_metadata`.* FROM `ar_internal_metadata` WHERE `ar_internal_metadata`.`key` = 'environment' LIMIT 1 (2.6ms) BEGIN (2.9ms) COMMIT (3.1ms) SELECT RELEASE_LOCK('7254395911760070465')
どうやらTableにcolumnをname, phone_number, descriptionそれぞれ追加できたようなので、
$ git push heroku master $ Everything up-to-date
でもう一度pushし、
$ heroku open
とした結果、今回はきちんとDBが更新され、正常にwebサイトが動作していることを確認できた。
ポイント
DB変更した後はHerokuでマイグレーションのコマンド
$ heroku run rake db:migrate
を忘れずに実行してから、herokuへのpushを行う。