(二十一) 部署網站with Heroku-資料庫問題

一開始學用Heroku部署網站時,碰到許多資料庫配置的問題,下面是原本資料庫的設定:

1
2
3
4
5
6
7
8
9
DATABASES = {    
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'quiz',
'USER': 'XXXX',
'PASSWORD': 'XXXXX',
'HOST': 'localhost',
},
}

整個專案都透過git上傳到heroku,但heroku顯示一個資料工作表都沒有:
https://ithelp.ithome.com.tw/upload/images/20200922/20129725IjyvIb40Lh.png

我先手動把資料庫上傳上去,在Terminal執行下面命令:

1
heroku pg:push postgres://localhost/資料庫的名字quiz postgresql-infinite-12345 --app django-hp-quiz

執行完後總算有資料了:
https://ithelp.ithome.com.tw/upload/images/20200922/201297252QRgYygOhM.png

但網頁畫面卻說:
https://ithelp.ithome.com.tw/upload/images/20200922/20129725f1CHkFhwuc.png

最後在settings.py增加下面的程式碼:

1
2
import dj_database_url
DATABASES['default'] = dj_database_url.config(conn_max_age=600)

小結:Heroku透過dj_database_url來定位資料庫(它是一串文字包含postgress://…username password database-name),而因為在一開始我沒有設定DATABASE URL,所以Heroku會默認使用他們提供的設定,資料庫才會是空的。

下圖的’HEROKU_POSTGRESQL_PUCE_URL’就是在沒有設置DATABASE URL時Heroku會幫你默認的資料庫相關資訊:
https://ithelp.ithome.com.tw/upload/images/20200922/20129725F8VyQAJ5fT.png