首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-mssql-后端-无效连接字符串属性(0)

django-mssql-后端-无效连接字符串属性(0)
EN

Stack Overflow用户
提问于 2021-04-08 12:37:18
回答 1查看 2K关注 0票数 4

好吧,我快疯了。我想将Django 3连接到MSSQLv15服务器。如果我使用Trustedconnection=yes (使用win凭据),则连接可以工作,如果我使用FreeTDS v7.4,它也可以在Ubuntu上工作,但是如果我手动插入服务帐户或个人凭据并使用FreeTDS登录,它将无法在FreeTDS中工作。这是某种依赖问题吗?我试过各种库版本组合,但都没有用。

错误消息是:

代码语言:javascript
复制
conn = Database.connect(connstr,
django.db.utils.InterfaceError: ('28000', "[28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'DOMAIN\\user'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0)")

Requiremetns.txt

代码语言:javascript
复制
asgiref              3.3.4
Django               3.2
django-mssql-backend 2.8.1
djangorestframework  3.12.4
pip                  20.2.3
pyodbc               4.0.30
pytz                 2021.1
setuptools           49.2.1
sqlparse             0.4.1

不工作(Win)

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'db_name',
        'HOST': 'hostname',
        'USER': 'DOMAIN\\user',
        'PASSWORD': 'pass',
        'PORT': '1433',

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

工作(Win)

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'db_name',
        'HOST': 'hostname',
        'USER': '',
        'PASSWORD': '',
        'PORT': '1433',

        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'Trusted_Connection': 'yes',
           }
        }
    }

Working (Ubuntu)

代码语言:javascript
复制
django==2.1.0
django-pyodbc-azure-2019

    DATABASES = {
        'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'db_name',
        'HOST': 'hostname',
        'USER': 'DOMAIN\\user',
        'PASSWORD': 'pass',
        'PORT': '1433',

            'OPTIONS': {
                "driver": "FreeTDS",
                "host_is_server": True,
                "extra_params": "tds_version=7.4",

               }
            }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-08 13:18:48

用于Server的ODBC驱动程序17似乎不支持通过用户名和密码对域用户进行身份验证,而FreeTDS是这样做的(参见https://stackoverflow.com/a/37702329/9461432)。在一台非Windows的机器上,微软引导你使用使用Kerberos.

如果您连接到使用Server身份验证的用户,则通过用户名和密码进行身份验证很好。(非域)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67004153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档