在Heroku上从Sqllite变为Postgres-为什么它不起作用?

时间:2017-03-26 21:03:22

标签: django postgresql heroku

我有点困惑,希望有人能帮助我 最初我使用sqllite db将我的django应用程序上传到heroku帐户 这就是我在DB的设置文件中所拥有的  DATABASES = {       '默认':{           ' ENGINE':' django.db.backends.sqlite3',           ' NAME':os.path.join(BASE_DIR,' db.sqlite3'),       }} import dj_database_url db_from_env = dj_database_url.config() 资料库['默认&#39]。更新(db_from_env) 自从SQLlite每24小时闪回其原始状态以来它没有用得很好(但由于我需要演示系统,所以工作得很好) 但是现在我必须使其高效,所以我想更改数据库以连接到postgres。所以我使用了我用heroku创建的postgres数据库中的凭据,我的数据库设置看起来像这样 DATABASES = {     '默认':{         ' ENGINE':' django.db.backends.postgresql_psycopg2',         ' NAME':' d4drq1yytest',         ' USER':' xvvqgkjtest',         ' PASSWORD':' test5y55y5y5y5y5y5y5y5y5y54y45',         ' HOST':' 777-77-77-67-7.compute-1.amazonaws.com',         ' PORT':' 5432',     } } import dj_database_url db_from_env = dj_database_url.config() 资料库['默认&#39]。更新(db_from_env) 但即使我更改了设置文件并重新部署了新文件,我仍然看到我的heroku应用程序已连接到我的sqllite数据库。 我做错了什么? (我使用github中的主早午餐进行部署。)

1 个答案:

答案 0 :(得分:1)

如果您还没有,可能需要在heroku应用程序的信息中心中添加heroku postgres作为应用程序。

好像你使用了我用来将heroku的postgres连接到heroku的相同代码。你应该只需说明

import dj_database_url db_from_env = dj_database_url.config() DATABASES['default'].update(db_from_env)

然后确保你已经安装了pip的whitenoise并将其添加到requirements.txt。在提交并推送到heroku后,您可能希望在cmd或终端上运行heroku run bash。然后您可能希望之后运行python manage.py makemigrations yourappname,您可能想要运行python manage.py migrate,如果您没有收到任何错误,您可能需要检查您的应用程序的heroku仪表板,点击postgres,查看如果任何postgres'表正在使用中。如果是,那么你正在使用heroku postgres。

对于heroku,您可能不需要以下代码行

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'd4drq1yytest', 'USER': 'xvvqgkjtest', 'PASSWORD': 'test5y55y5y5y5y5y5y5y5y5y54y45', 'HOST': '777-77-77-67-7.compute-1.amazonaws.com', 'PORT': '5432', } }

这应该是您调用将使用localhost测试的数据库的地方。