首页 > 解决方案 > 获取 'settings.DATABASES 配置不正确。请提供名称值'错误

问题描述

我正在使用 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”字段留空也会产生同样的错误。提前非常感谢。

标签: djangodatabaseazuredjango-settings

解决方案


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 Server,数据库配置:

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. 如何将 Django 与 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 和 MS SQL Server:新的 python 模块/库django-pyodbc-azure支持 Django 2.0 和 Django 1.11 等更低版本。

希望这可以帮助。


推荐阅读