好吧,我快疯了。我想将Django 3连接到MSSQLv15服务器。如果我使用Trustedconnection=yes (使用win凭据),则连接可以工作,如果我使用FreeTDS v7.4,它也可以在Ubuntu上工作,但是如果我手动插入服务帐户或个人凭据并使用FreeTDS登录,它将无法在FreeTDS中工作。这是某种依赖问题吗?我试过各种库版本组合,但都没有用。
错误消息是:
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
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)
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)
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)
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",
}
}
}发布于 2021-04-08 13:18:48
用于Server的ODBC驱动程序17似乎不支持通过用户名和密码对域用户进行身份验证,而FreeTDS是这样做的(参见https://stackoverflow.com/a/37702329/9461432)。在一台非Windows的机器上,微软引导你使用使用Kerberos.
如果您连接到使用Server身份验证的用户,则通过用户名和密码进行身份验证很好。(非域)
https://stackoverflow.com/questions/67004153
复制相似问题