django-mssql-backend - 无效的连接字符串属性 (0)
django-mssql-backend - Invalid connection string attribute (0)
好吧,我要慢慢疯了。我想将 Django 3 连接到 MSSQLv15 服务器。如果我使用 Trustedconnection=yes(使用 win 凭据),连接有效,如果我使用 FreeTDS v7.4,它也适用于 Ubuntu,但如果我手动插入服务帐户,它在 Windows 中不起作用或个人凭据并使用 sql 登录。这是某种依赖性问题吗?我尝试了各种库版本组合,但无济于事。
错误信息为:
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',
}
}
}
正在工作(赢)
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',
}
}
}
工作 (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",
}
}
}
SQL 服务器的 ODBC 驱动程序 17 似乎不支持通过用户名和密码对域用户进行身份验证,而 FreeTDS 支持(请参阅 ). On a non-Windows machine, Microsoft directs you to use Kerberos。
如果您连接到使用 SQL 服务器身份验证(即非域)的用户,则通过用户名和密码进行身份验证可以正常工作。
好吧,我要慢慢疯了。我想将 Django 3 连接到 MSSQLv15 服务器。如果我使用 Trustedconnection=yes(使用 win 凭据),连接有效,如果我使用 FreeTDS v7.4,它也适用于 Ubuntu,但如果我手动插入服务帐户,它在 Windows 中不起作用或个人凭据并使用 sql 登录。这是某种依赖性问题吗?我尝试了各种库版本组合,但无济于事。
错误信息为:
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',
}
}
}
正在工作(赢)
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',
}
}
}
工作 (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",
}
}
}
SQL 服务器的 ODBC 驱动程序 17 似乎不支持通过用户名和密码对域用户进行身份验证,而 FreeTDS 支持(请参阅 ). On a non-Windows machine, Microsoft directs you to use Kerberos。
如果您连接到使用 SQL 服务器身份验证(即非域)的用户,则通过用户名和密码进行身份验证可以正常工作。