【问题标题】:Connect to a database other than the default database in redshift连接到 redshift 中默认数据库以外的数据库
【发布时间】:2017-11-13 10:49:41
【问题描述】:

我需要将我的 django 应用程序连接到一个不同于 redshift 中默认数据库的数据库。当我将它连接到默认数据库时,连接成功。当我将它连接到非默认数据库时,它会显示一条错误消息

“django.db.utils.OperationalError: FATAL: 数据库“test”不存在

DATABASES = {
  'default': {
      'NAME': 'test',
      'ENGINE': 'django.db.backends.postgresql_psycopg2',
      'USER': 'test',
      'PASSWORD': '######',
      'HOST': '############.redshift.amazonaws.com',
      'PORT': ####
  }
}

【问题讨论】:

  • 我使用 psycopg2 连接到 Redshift 并且它工作正常,因此假设数据库存在于该集群上,没有理由说明为什么它不应该工作。尝试使用 SQL Workbench 等 SQL 客户端连接到同一个数据库,看看是否遇到同样的问题。
  • @Dilani - 你解决了吗?我有同样的问题。

标签: django postgresql django-models django-rest-framework amazon-redshift


【解决方案1】:

在 PostgreSQL 中,您连接到数据库,而不是模式。在您的 settings.py 中,NAME 应该是您要连接的数据库的名称。 PostgreSQL 的默认数据库是postgres

USER 是您要登录的实际 PostgreSQL 用户。同样,默认值为postgres

它们是两个不同的东西。您可以以postgres 用户身份登录PostgreSQL 并连接到数据库test

【讨论】:

  • 我已经编辑了这个问题。那是个错误。在上述场景中,我要连接的数据库的名称是 'test' 。在 redshift 中,我配置了名为“default_one”的默认数据库。当我将我的 django 应用程序连接到“default_one”时,它是成功的。当我连接到“测试”时,它会引发错误。
  • 测试数据库是否存在?如果是这样,您登录的用户是否有权访问它?
  • 是的,数据库存在并且用户也可以访问它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
相关资源
最近更新 更多