Heroku、本番環境上のマイグレーションファイルについて
こんにちは。
プログラマー初学者です。
よろしくお願いします。
解決したいこと
開発環境でマイグレーションファイルを編集しました。
3つくらい前に作成したマイグレーションファイルだったので
マイグレーションファイルの日付を変更
rails db:migrate:resetでデータベースリセット
rails db:migrateでOKでした。
その後、編集を重ね
Herokuへデプロイのため
git push heroku master
heroku run rails db:migrateをすると
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
というエラーが発生。
rails db:migrate:statusで確認
https://gyazo.com/8434a9be9f2ad77fd9f55a95acd5ec1d
編集前のマイグレーションファイルが NO FILE という状態で
編集後のマイグレーションファイルが down の状態でした。
開発環境と同じように
heroku run rails db:migrate:reset を実行後
heroku run rails db:migrateをしたのですが、解決できず。
編集前のファイルを削除する必要があるのでしょうか?
発生している問題・エラー
% heroku run rails db:migrate 実行
Running rails db:migrate on ⬢ cluster-board... up, run.1615 (Free)
D, [2022-05-27T06:32:46.626626 #4] DEBUG -- : (1.8ms) SELECT GET_LOCK('201078901223291700', 0)
D, [2022-05-27T06:32:46.639256 #4] DEBUG -- : (1.8ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
I, [2022-05-27T06:32:46.640577 #4] INFO -- : Migrating to CreateRooms (20220527191933)
== 20220527191933 CreateRooms: migrating ======================================
-- create_table(:rooms)
D, [2022-05-27T06:32:46.645083 #4] DEBUG -- : (1.7ms) SELECT @@innodb_file_per_table = 1 AND @@innodb_file_format = 'Barracuda'
D, [2022-05-27T06:32:46.651960 #4] DEBUG -- : (2.0ms) CREATE TABLE `rooms` (`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, `room_name` varchar(255) NOT NULL, `category_id` int NOT NULL, `content` text NOT NULL, `user_id` bigint NOT NULL, `created_at` datetime(6) NOT NULL, `updated_at` datetime(6) NOT NULL, INDEX `index_rooms_on_user_id` (`user_id`), CONSTRAINT `fk_rails_a63cab0c67`
FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`)
) ROW_FORMAT=DYNAMIC
D, [2022-05-27T06:32:46.653997 #4] DEBUG -- : (1.9ms) SELECT RELEASE_LOCK('201078901223291700')
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'rooms' already exists
/app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.4/lib/mysql2/client.rb:148:in `_query'
/app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.4/lib/mysql2/client.rb:148:in `block in query'
/app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.4/lib/mysql2/client.rb:147:in `handle_interrupt'
/app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.4/lib/mysql2/client.rb:147:in `query'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.5/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:201:in `block (2 levels) in execute'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.5/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.5/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.5/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.5/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:200:in `block in execute'
/app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:728:in `block (2 levels) in log'
/app/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.5/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
以下略
% heroku run rails db:migrate:status
Running rails db:migrate:status on ⬢ cluster-board... up, run.2840 (Free)
database: heroku_ab2cad6d3bcd9a5
Status Migration ID Migration Name
--------------------------------------------------
D, [2022-05-27T06:27:41.800208 #4] DEBUG -- : (2.1ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
up 20220519193354 Devise create users
up 20220519224908 Create active storage tablesactive storage
up 20220523191933 ********** NO FILE **********
up 20220523195715 ********** NO FILE **********
up 20220526064555 ********** NO FILE **********
down 20220527191933 Create rooms
down 20220527195715 Create room users
down 20220527214555 Create messages
自分で試したこと
ここに問題・エラーに対して試したことを記載してください。
git push heroku master
heroku run rails db:migrate
heroku run rails db:migrate:reset
heroku run rails db:migrate
上から順に試してみましたが解決できませんでした。