suzy1031 / everyday-study-app

0 stars 0 forks source link

ver4.0デプロイエラー #41

Closed suzy1031 closed 3 years ago

suzy1031 commented 3 years ago

pgではdayofweekメソッドが使えない

{"errors":["PG::UndefinedFunction:

ERROR:  function dayofweek(timestamp without time zone) does not exist\nLINE 1: ...ime, 

\"studies\".\"user_id\", \"studies\".\"created_at\", dayofweek(...\n                                                             

^\nHINT:  No function matches the given name and argument types. You might need to add explicit type 

casts.\n: SELECT \"studies\".\"id\", sum(time) as time, \"studies\".\"user_id\", \"studies\".\"created_at\", 

dayofweek(created_at) - 1 as day_of_week FROM \"studies\" WHERE \"studies\".\"user_id\" = $1 AND 

\"studies\".\"created_at\" BETWEEN $2 AND $3 GROUP BY date(created_at)"]}
suzy1031 commented 3 years ago

dayofweekが使えないのか、sql発行して確認してみる SELECT dayofweek(created_at) -1 as day_of_week FROM studies GROUP BY date(created_at) =>データが取得できない

ポスグレで書くと、

select extract(dow from date '2021-01-30');
=> 6

studiesテーブルから曜日を取得する

select extract(dow from created_at) from studies;

herokuのDBをpgからmysqlに変更する

suzy1031 commented 3 years ago
heroku addons:create cleardb:ignite
heroku config
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true

以下の値を設定する

$ heroku config:add DB_NAME='<データベース名>'
$ heroku config:add DB_USERNAME='<ユーザー名>'
$ heroku config:add DB_PASSWORD='<パスワード>'
$ heroku config:add DB_HOSTNAME='<ホスト名>'
$ heroku config:add DB_PORT='3306'
$ heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'

エラー

heroku config:add DATABASE_URL=〜を叩くと、
Cannot overwrite attachment values DATABASE_URL.
heroku addons:attach heroku-postgresql -a AAP_NAME --as HEROKU_DATABASE
heroku addons:detach DATABASE -a APP_NAME
heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'
Cannot destroy last attachment to billing app for resource postgresql-aerodynamic-33095

destoryしろよって言われている

heroku addons:destroy DATABASE -a APP_NAME
Destroying postgresql-aerodynamic-33095 on ⬢ APP_NAME... done
heroku addons:detach DATABASE -a APP_NAME
DATABASE_URLが消えた

もう一度、値をセットする

heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'
DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'
セットされた様子
heroku config
DATABASE_URL='mysql2://~~~'

gemfile変更

-gem pg
+gem mysql2
git push heroku master
heroku rake db:migrate

正常に動作した

suzy1031 commented 3 years ago

sequel proにherokuのDBを繋ぐ idが10づつインクリメントされる => ClearDBの仕様らしい...

suzy1031 commented 3 years ago

参考 Cannot overwrite attachment values DATABASE_URL Herokuへのデプロイ方法【Heroku+Rails+MySQL】 HerokuでMySQLを使おうとして詰まったところ https://qiita.com/shou1012/items/bf55a185920e717f4011 How to change DATABASE_URL for a heroku application