一開始學用Heroku部署網站時,碰到許多資料庫配置的問題,下面是原本資料庫的設定:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'quiz',
'USER': 'XXXX',
'PASSWORD': 'XXXXX',
'HOST': 'localhost',
},
}
整個專案都透過git上傳到heroku,但heroku顯示一個資料工作表都沒有:
我先手動把資料庫上傳上去,在Terminal執行下面命令:
heroku pg:push postgres://localhost/資料庫的名字quiz postgresql-infinite-12345 --app django-hp-quiz
執行完後總算有資料了:
但網頁畫面卻說:
最後在settings.py增加下面的程式碼:
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會幫你默認的資料庫相關資訊: