我想要把 rails 的內建資料庫改成postgreSQL

Mino chen
CodeForMyself
Published in
4 min readDec 10, 2020

養成每天都做一個小任務,讓自己可以學會很多酷東西!

經過了大崩潰學習程式之旅之後,我重新思考了軟體工程師他們的特質,好像個性都蠻穩定的,遇到問題的時候會思考一下自己的經驗中的解決辦法,然後再上網找答案。

這一趟學程式之旅已經快轉變成修練身心靈之旅了,接下來我要以遇到困難時的三個問題解決法幫自己訓練沈穩的學程式技能。

  1. 你想要做什麼?
  2. 你已經嘗試過什麼方法?
  3. 結果如何?

就算找不到答案,需要上網去問問題,這也是一個很好的說明,告訴別人你已經做過什麼努力,而不是只是上去當伸手牌。好的那就開始吧!

我發現我一開始想要做的事情,其實是兩件事情,所以我搜尋了很久一直失敗,我應該再拆分成:

  1. 如何灌 postgreSQL 並建立資料庫名字
  2. 如何把 rails 的 SQLite 改成 PostgreSQL

如何灌 postgreSQL 並建立資料庫名字

Step 1. $ brew install postgresql

灌好我的 postgresql

Step 2. $ brew services start postgresql

啟動 postgreSQL

Step 3. $ createdb

建立一個我自己名稱的資料庫

Step 4. $ psql

這樣就可以進入 postgresql 裡執行指令

如何把 rails 的 SQLite 改成 PostgreSQL

又分成兩種方式:

  1. 開新專案就直接使用 PostgreSQL
  2. 在原本的專案裡加入 PostgreSQL

開新專案就直接使用 PostgreSQL

$ rails new myapp --database=postgresql

在原本的專案裡加入 PostgreSQL

Step 1. 打開你的 gemfile

加入 gem 'pg' (根據你想要在開發還是上線做設定,如果統一的話就直接設在ruby後面)

記得移除原本的 SQLite

Step 2. 設定你的資料庫基本資料

路徑:config / database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %>

development:
<<: *default
database: YOUR_PROJECT_NAME_with_pg_development

test:
<<: *default
database: YOUR_PROJECT_NAME_with_pg_test

production:
<<: *default
database: YOUR_PROJECT_NAME_with_pg_production
username: YOUR_PROJECT_NAME_with_pg
password: <%= ENV['YOUR_PROJECT_NAME_WITH_PG_DATABASE_PASSWORD'] %>

(引用 學長文章:https://www.stevenchang.tw/blog/2019/06/27/Install-PostgreSQL-in-Rails-Project )

Step 3. 建立對應專案的資料庫

  1. $ rails db:create
  2. 已經建立過一些資料表的
    $ rails db:setup

Step 4. 開始使用資料庫

  1. $ rails db:migrate 把資料表具現化
  2. $ rails s 啟動伺服器

跟 PostgreSQL 相關的指令:

  1. 查看版本:$ pg_ctl -V(注意V是大寫)
  2. 查看安裝位置:$ where pg_ctl (我的在這裡:/usr/local/bin/pg_ctl)
  3. 解除安裝: $ brew uninstall postgres
  4. 啟動跟關閉:
    pg_ctl -D /usr/local/var/postgres start
    pg_ctl -D /usr/local/var/postgres stop
  5. 不想每次開機都啟動可以使用:
    $ brew services start postgresql (常駐啟動)
    $ brew services stop postgresql (常駐關閉)
    $ brew services restart postgresq(重新啟動)
  6. 想再建一個資料庫
    $ createdb <db_name>
  7. 想進不同資料庫查看
    $ psql <db_name>

--

--