rails5で開発したアプリをherokuへデプロイし
heroku run rails db:migrate しようとしたところ
恐らくデータ型関連でエラーが起きてしまいました
開発環境ではsqlite 本番環境ではPostgreSQLを使っています
フォームにYouTubeのURlを入力し、その動画が公開された日付を
保存するアプリをYouTubeのAPIを用いて製作中です
取得した日付は"2010-04-16T10:05:24.000Z"のような文字列なので
Time.parseしてからvideosテーブルのpublished_atカラムに保存します
ruby
1>> Time.parse("2010-04-16T10:05:24.000Z") 2=> 2010-04-16 08:39:12 UTC
初めはpublished_atのデータ型をtimeにしていたのですが
時刻までしか保存できなかったのでdatetimeに変更しました
ruby
1class ChangeDatatypePublishedAtOfVideos < ActiveRecord::Migration[5.1] 2 def change 3 change_column :videos, :published_at, :datetime 4 end 5end
git push heroku まではうまくいきました
しかしheroku run rails db:migrateをすると
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DatatypeMismatch: ERROR: column "published_at" cannot be cast automatically to type timestamp without time zone
HINT: You might need to specify "USING published_at::timestamp without time zone".
: ALTER TABLE "videos" ALTER COLUMN "published_at" TYPE timestamp
というエラーコードが出ました
フォームにURL入力⇒公開された日付を保存すると
2000年1月1日 19時5分 という風に時刻だけが保存されて
日付がすべて2000年1月1日になってしまいました
sqliteを使用中のdevelopment環境ではrails db:migrateが問題なく動きますし保存も成功します
PostgreSQLで何かが起きているのはわかりますがDB関連に疎いので何がおきているのか分からないです
どうすればheroku run rails db:migrateがうまくいくのでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/30 11:49
2017/11/30 11:51