【发布时间】:2018-06-21 05:51:56
【问题描述】:
我的 Django 应用程序需要访问两个数据库。一个是由一个单独的应用程序拥有的共享数据库,Django 应用程序只有读取权限。第二个完全归 Django 应用所有。
对于本地开发我没问题,但我不确定如何配置以使 Heroku 使用第二个数据库。
目前我将共享数据库提升为DATABASE_URL,辅助数据库位于HEROKU_POSTGRESQL_BLUE_URL。
在我的设置中:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'main_database_name',
'USER': 'username',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '5432',
}, 'secondary': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'secondary_database_name',
'USER': 'username',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '5432',
}
}
如果您需要我澄清,请提出更多问题。
谢谢!
总之,我的具体问题是:我不知道如何让 Heroku 使用 HEROKU_POSTGRESQL_BLUE_URL 作为“辅助”数据库。
---编辑----
settings.py的底部:
# Configure Django App for Heroku.
import django_heroku
django_heroku.settings(locals())
这是在我的应用程序的默认数据库和 Heroku 的 DATABASE_URL 之间建立连接的地方。我仍然没有解决这个问题,但是在 cmets 的一些故障排除帮助之后,我相信答案会在那里找到。
【问题讨论】:
-
您是否尝试了不起作用的配置?您遇到的具体问题是什么?
-
@Blurp 这是我当前的设置,但我还没有部署它。我不确定如何告诉 heroku 使用
HEROKU_POSTGRESQL_BLUE_URL作为我的辅助数据库。 -
那么,您如何告诉它使用 DATABASE_URL 作为主数据库?这从您显示的代码中并不明显。
-
@DanielRoseman 正确。 :) 我不确定 Heroku 上是如何发生的。但我可以确认默认数据库正在使用 heroku 上的 DATABASE_URL。我假设由于“默认”数据库名称是 Django 上保留的特殊名称,并且 DATABASE_URL 始终是 heroku 上主数据库的名称,因此除非另有说明,否则两者会自动连接。可能在 django-heroku buildpack 中。
-
没有。这不是自动的。您的设置文件中必须有一些引用 DATABASE_URL 的内容;你应该展示它。
标签: python django postgresql heroku multiple-databases