#実現したいこと
ローカルのRailsアプリケーションを、herokuにpushして動作させる
#現状
ローカルのRailsアプリケーションを、herokuにpushしたのち、
heroku run rails db:migrateを実行すると、
PG::DatatypeMismatch: ERROR: column "date" cannot be cast automatically to type date
というエラーが発生する。
詳細を見ると、
20200630131512 ChangeDatatypeDateOfUsages: migrating ======================= -- change_column(:usages, :date, :date) D, [2020-08-01T05:47:39.087967 #4] DEBUG -- : (2.9ms) ALTER TABLE "usages" ALTER COLUMN "date" TYPE date D, [2020-08-01T05:47:39.088873 #4] DEBUG -- : (0.7ms) ROLLBACK
となっており、該当のマイグレーションファイルは、
class ChangeDatatypeDateOfUsages < ActiveRecord::Migration[5.2] def change change_column :usages, :date, :date end end
というもの。これは、当初、Usagesテーブルを作成する際、dateカラムをintegerでALTERしたものの、適切でないことに気付いて、date型に変更するマイグレーションファイルを追加した、という経緯。
この処理が、ローカル環境(sqlite3)ではうまくいっていたものの、Heroku(postgresql)ではうまくいっていない
#実施したこと
以下のように、columnをremoveしてaddするマイグレーションファイルを追加した
class RemoveDateFromUsages < ActiveRecord::Migration[5.2] def change remove_column :usages, :date, :date end end
class AddDateToUsages < ActiveRecord::Migration[5.2] def change add_column :usages, :date, :date end end
#実施したこと の結果
上記の2つのマイグレーションファイルは実行されずに処理が終了してしまいます。
heroku run rails db:migrate:status
database: ********
Status Migration ID Migration Name
D, [2020-08-01T06:00:19.270873 #4] DEBUG -- : (1.7ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
up 20200528125514 Devise create users
up 20200529143446 Add name to users
up 20200530103705 Create groups
up 20200530103854 Create group users
up 20200605144835 Create plans
up 20200613063958 Create usages
up 20200620101500 Add choices to plans
down 20200630131512 Change datatype date of usages //問題のマイグレーションファイル
down 20200801034216 Remove date from usages //実行されてほしいマイグレーションファイル
down 20200801034530 Add date to usages //実行されてほしいマイグレーションファイル
#聞きたいこと
ローカルでは既に実行済みのマイグレーションファイルを削除して、Herokuにpushすると、というのは
何らかのエラーの原因になりえますでしょうか。
具体的には、ChangeDatatypeDateOfUsagesマイグレーションファイルを削除したい(=実行されないようにしたい)です。
https://qiita.com/jnchito/items/3525fd22973477b88411
を見るに、やってはいけない行為のようですが、代替案が思い浮かばずにいます。
知見がお有りの方、どうぞ宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/01 06:50
2020/08/01 08:06
2020/08/01 14:23 編集
2020/08/01 14:40 編集
2020/08/01 19:44
2020/08/01 23:18
2020/08/01 23:23