【问题标题】:Getting a 'settings.DATABASES is improperly configured. Please supply the NAME value' error获取 'settings.DATABASES 配置不正确。请提供名称值'错误
【发布时间】:2020-04-24 00:57:31
【问题描述】:

我正在使用 Django 连接到本地数据库。此前,该数据库托管在 Azure 上。 我之前在 Django 设置中使用的连接字符串如下-

用于Azure的sql数据库

DATABASES = {
   'default': {
      'ENGINE': 'sql_server.pyodbc',
      'NAME': 'DatabaseName', #notrealname
      'USER': 'username',
       'PASSWORD': 'password',
       'HOST': 'sql-django-uat.database.windows.net', #notreal
       'PORT': '1433',
       'OPTIONS': {
        'driver': 'ODBC Driver 13 for SQL Server',
        'MARS_Connection': 'True',
       }

数据库迁移后,该字符串不起作用。我不断收到“登录超时已过期”。

但是用“DATABASE”代替“NAME”是可行的。下面给出的例子-

DATABASES = {
   'default': {
      'ENGINE': 'sql_server.pyodbc',
      'DATABASE': 'DatabaseName', #notrealname
      'USER': 'username',
       'PASSWORD': 'password',
       'HOST': 'on-prem.local',
       'PORT': '1433',
       'OPTIONS': {
        'driver': 'ODBC Driver 13 for SQL Server',
        'MARS_Connection': 'True',
       }

我的 webapp 进入登录页面。但是在我登录后,我收到错误 - 'ImproperlyConfigured at /login/

settings.DATABASES 配置不正确。请提供 NAME 值。'

谁能告诉我如何解决这个问题?我应该提到将“NAME”字段留空也会产生同样的错误。提前非常感谢。

【问题讨论】:

  • 你可以试试这个教程:medium.com/@royce236/… 吗?也许它可以帮助您解决错误。
  • 你的 Django 版本是什么?
  • 版本为 1.11。谢谢
  • 嗨 Suprakash Ghosh,如果我的回答对您有帮助,您可以投票并将其标记为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)? .这对其他社区成员可能是有益的。如果您有任何进展,请告诉我,谢谢。

标签: django database azure django-settings


【解决方案1】:

From the Azure SQL database,settings.py 应该是:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'mydb',
        'USER': 'user@myserver',
        'PASSWORD': 'password',
        'HOST': 'myserver.database.windows.net',
        'PORT': '',

        'OPTIONS': {
            'driver': 'ODBC Driver 13 for SQL Server',
        },
    },
}

# set this to False if you want to turn off pyodbc's connection pooling
DATABASE_CONNECTION_POOLING = False

用户:字符串。采用“user”(本地)或“user@server”(Azure SQL 数据库)格式的数据库用户名。如果未给出,则将使用 MS Integrated Security。

参考:django-pyodbc-azure 2.1.0.0

对于本地 SQL 服务器,数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'HOST': '(LocalDB)\ProjectLocalDB',
        'PORT': '',
        'NAME': 'my_db',
        'USER': 'my_user',
        'PASSWORD': 'my_password',
        'OPTIONS': {
            'driver': 'ODBC Driver 13 for SQL Server',
        },
    },
}

这里有两个教程,我想你可以学习一下,看看你是否漏掉了什么:

  1. How to use Django with SQL Server LocalDB: 这个帖子已经 使用 Microsoft SQL Server 2017、Django 1.11.x 和 2.x 进行测试。这 pyodbc 和 django-pyodbc-azure 包将用于连接 Django 到 SQL Server。 django-pyodbc-azure 的版本必须匹配 你的 Django 版本。
  2. Django and MS SQL Server:新的 python 模块/库是支持 Django 的 django-pyodbc-azure 2.0 及更低版本,如 Django 1.11。

希望这会有所帮助。

【讨论】:

    【解决方案2】:
    DATABASES = {
       'default': {
          'ENGINE': 'sql_server.pyodbc',
          'NAME': 'DatabaseName', #notrealname
          'USER': '<replace with on-premise DB Username>',
           'PASSWORD': '<replace with on-premise DB password>',
           'HOST': '<replace with database URL of on-premise DB URL>',
           'PORT': '1433',
           'OPTIONS': {
            'driver': 'ODBC Driver 13 for SQL Server',
            'MARS_Connection': 'True',
           }
    

    【讨论】:

    • 本地用户名和密码相同。就像我在问题中提到的那样,此连接字符串确实有效,但给出了错误-“提供名称值”。将“名称”字段留空也不能解决问题。
    猜你喜欢
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2014-11-22
    • 2017-12-17
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多