【问题标题】:django.core.exceptions.ImproperlyConfigured: The database name '****.amazonaws.com' (85 characters) is longer than PostgreSQL's limit of 63 charactersdjango.core.exceptions.ImproperlyConfigured:数据库名称“****.amazonaws.com”(85 个字符)超过 PostgreSQL 的 63 个字符限制
【发布时间】:2020-08-15 09:04:04
【问题描述】:

我正在尝试将我的 Django 模型迁移到 AWS Lightsail 数据库,但出现以下错误。我的数据库在 AWS Lightsail 上。它是 PostgreSQL。我正在 AWS 上部署我的项目,所以我已经设置了几乎所有东西,除了模型迁移。

亚马逊数据库可用的连接选项:

    Endpoint->  ************.ap-******-1.***.amazonaws.com,
    Port->    5444,
    User name->  db,
    Password->  Something

MY SETTINGS.PY 文件数据库连接选项:

        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': '****Endpoint*****',
            'USER': 'db',
            'PASSWORD': 'Something',
            'HOST': '5444'
        }
    }

终端错误:

> `2, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/db/migrations/recorder.py", lin
e 76, in applied_migrations
    if self.has_table():
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/db/migrations/recorder.py", lin
e 56, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/utils/asyncio.py", line 26, in 
inner
    return func(*args, **kwargs)
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/db/backends/base/base.py", line
 260, in cursor
    return self._cursor()
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/db/backends/base/base.py", line
 236, in _cursor
    self.ensure_connection()
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/utils/asyncio.py", line 26, in 
inner
    return func(*args, **kwargs)
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/db/backends/base/base.py", line
 220, in ensure_connection
    self.connect()
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/utils/asyncio.py", line 26, in 
inner
    return func(*args, **kwargs)
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/db/backends/base/base.py", line
 196, in connect
    conn_params = self.get_connection_params()
  File "/home/bitnami/portfolio/ManojJha-portfolio/.venv/lib/python3.7/site-packages/django/db/backends/postgresql/base.py"
, line 165, in get_connection_params
    self.ops.max_name_length(),
django.core.exceptions.ImproperlyConfigured: The database name '*****************Database End-point*****************.***.amazonaws.com' (85 characters) is longer than PostgreSQL's limit of 63 characters. Supply a shorter NAME in settings.DATABASES.```

那么有没有办法缩短 端点 名称或有任何其他解决方案来处理此错误。请指导我进行设置。

谢谢, -Manoj Jha

【问题讨论】:

    标签: python django postgresql amazon-web-services


    【解决方案1】:

    “HOST”应该是主机名,而不是端口! “NAME”是数据库的名称。

    来自Django documentation的例子:

    'ENGINE': 'django.db.backends.oracle',
    'NAME': 'xe',
    'USER': 'a_user',
    'PASSWORD': 'a_password',
    'HOST': 'dbprod01ned.mycompany.com',
    'PORT': '1540',
    

    【讨论】:

    • 以下详细信息可用于数据库连接。不确定哪个是主机,因为他们只给出了端点。端点-> ************.ap-******-1.***.amazonaws.com,端口-> 5444,用户名-> db,密码-> 某事
    • @ManojJha HOST 是端点,PORT 是端口,USER 是用户名,NAME 是数据库,PASSWORD 是您的密码
    • 谢谢,@Rafael 终于成功了。我必须将 AWS DB 连接到我的本地 DB 才能找到 DB 名称,所以之后它现在可以工作了。感谢您的帮助。
    • 非常感谢
    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2011-06-28
    • 2021-10-23
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多