iT邦幫忙

0

Rails入門:疑難雜症~~ 無情dubug!! 上傳Heroku先從資料庫開始 PostgreSQL

大家好,我是Sean,一位Rails初心者,第一次發文請大大們手下留情XD

受一位朋友RS啟發,決定轉職後端工程師,目標網全端前進

爬文後,發現一位老師Rails教很好,而且有yt視頻,可以搜尋RailsFun.tw 新手教學,而我臨摹新手教學2.5,建立商城可User註冊還有Manager後臺管理

成功後想上傳Heroku卻發生一些問題,這也是發文原因,希望能減少其他人dug時間

將介紹Postgres資料庫三個自己遇到的問題及解決方法

首先安裝PostgreSQL,這邊跳過安裝步驟,是否安裝成功 psql – V 或是先查路徑 locate bin/postgres,再輸入一串剛剛路徑/postgres - V

本文開始,可以參考網站部署(使用 Heroku),網站提到Heroku 預設支援 PostgreSQL,若用mysql會發生問題一

Mysql2::Error: Can't connect to MySQL server

解決方法,改為PostgreSQL

  • 修改 Gemfile
  • 修改 config/database.yml
    如圖1
    https://ithelp.ithome.com.tw/upload/images/20201019/20126905TJcitOMy61.png
    左邊mysql,右邊PostgreSQL,帳密都PostgreSQL

當登入PostgreSQL時問題二

psql: FATAL: password authentication failed for user "postgres"

解決方法 sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

原因之一密碼沒設定,另個原因可能是問題三
來源stackoverflow
帳密都PostgreSQL,跟database.yml一致就好

修改後,當時我在本地run rails db:migrate,發生問題三

fatal: peer authentication failed for user

解決方法,修改 Database administrative 下列中的peer改為trust

指令sudo nano /etc/postgresql/10/main/pg_hba.conf,這指令因人而異,看你postgresql版本,樓上提到locate bin/postgres可以看到版本

範例如下
local all postgres peer
// change to
local all postgres trust

改成trust或md5 ,#peer(不可信),trust(可信),md5(加密)

記得systemctl status postgresql.service重啟看成不成功,安裝成功 psql – Vsudo -i -u postgres(帳號),再psql – V,後續指令跳過了

最終結果如下,終於阿,正所謂無情dubug..
https://ithelp.ithome.com.tw/upload/images/20201019/20126905dx5jqlo7gy.png

以上修改後,git commit,再一次push,若是push不成功,我的經驗是git Heroku重新一次,把全部複製到另一至資料夾,再 git remote addHeroku login等等

以上主要是PostgreSQL發生的問題,希望有幫助大家,接下來下一篇介紹是Zeitwerk::NameError如何解決


尚未有邦友留言

立即登入留言