简体   繁体   English

将Django连接到MSSQL Server 2012时出错

[英]Error connecting Django to MSSQL Server 2012

Am getting an error in making migrations for my current django project. 在为我当前的django项目进行迁移时遇到错误。

below is the code written in settings.py file to connect to MSSQL Server. 以下是在settings.py文件中编写的用于连接MSSQL Server的代码。

DATABASES = {
'default': {
    'ENGINE':'sql_server.pyodbc',
    'NAME':'JTPROD',
    'HOST':'TZACL5X8H1N2\SQLEXPRESS', ##this is my local machine database
    'USER':'xxx', ##ommitted for the post 
    'PASSWORD':'xxx',##ommitted for tht post
    'PORT':'',

    'OPTIONS':{
        'provider': 'SQLOLEDB', # Have also tried 'SQLCLI11' and 'SQLCLI10'
        'extra_params': 'DataTypeCompatibility=80',
        'driver':'SQL Server',
             },
    },
}

but am getting the following error when I run "python manage.py migrate 但是当我运行“ python manage.py migration时出现以下错误

Traceback (most recent call last): File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\backends\\base\\base.py", line 216, in ensure_connection self.connect() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\backends\\base\\base.py", line 194, in connect self.connection = self.get_new_connection(conn_params) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\sql_server\\pyodbc\\base.py", line 307, in get_new_connection timeout=timeout) pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver]Neither DSN nor SERVER keyword supplied (0) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)') 追溯(最近一次通话):文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ backends \\ base \\ base.py”,第216行,在sure_connection self.connect()文件中,“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ backends \\ base \\ base.py”,第194行,在connect self.connection = self.get_new_connection(conn_params)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ sql_server \\ pyodbc \\ base.py”中,行307,在get_new_connection timeout = timeout中)pyodbc.OperationalError :(“ 08001”,“ [08001] [Microsoft] [ODBC SQL Server驱动程序]既不提供DSN也不提供SERVER关键字(0)(SQLDriverConnect); [08001] [Microsoft] [ ODBC SQL Server驱动程序]无效的连接字符串属性(0)')

The above exception was the direct cause of the following exception: 上面的异常是以下异常的直接原因:

Traceback (most recent call last): File "manage.py", line 15, in execute_from_command_line(sys.argv) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\core\\management__init__.py", line 381, in execute_from_command_line utility.execute() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\core\\management__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\core\\management\\base.py", line 316, in run_from_argv self.execute(*args, **cmd_options) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\core\\management\\base.py", line 353, in execute output = self.handle(*args, **options) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\core\\management\\base.py", line 83, in wrapped res = handle_func(*args, **kwarg 追溯(最近一次通话):在execute_from_command_line(sys.argv)中的文件“ manage.py”,第15行,文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-包\\ django \\ core \\ management__init __。py”,行381,位于execute_from_command_line utility.execute()文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\执行self.fetch_command(subcommand).run_from_argv(self.argv)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-”中的core \\ management__init __。py”,行375包\\ django \\ core \\ management \\ base.py”,第316行,位于run_from_argv self.execute(* args,** cmd_options)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ core \\ management \\ base.py“,行353,在执行输出= self.handle(* args,** options)文件” C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ core \\ management \\ base.py“,第83行,包装的res = handle_func(* args,** kwarg s) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\core\\management\\commands\\migrate.py", line 82, in handle executor = MigrationExecutor(connection, self.migration_progress_callback) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\migrations\\executor.py", line 18, in init self.loader = MigrationLoader(self.connection) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\migrations\\loader.py", line 49, in init self.build_graph() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\migrations\\loader.py", line 212, in build_graph self.applied_migrations = recorder.applied_migrations() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\migrations\\recorder.py", line 61, in applied_migrations if self.has_table(): File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib s)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ core \\ management \\ commands \\ migrate.py”,第82行,句柄执行器= MigrationExecutor (连接,self.migration_progress_callback)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ migrations \\ executor.py”,第18行, init self.loader = MigrationLoader(自我连接)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ migrations \\ loader.py”,第49行,在init self.build_graph()文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ migrations \\ loader.py”中,第212行,在build_graph self.applied_migrations = logger.applied_migrations()文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ migrations \\ recorder.py”,第61行,如果为self.has_table(),则位于Applied_migrations中:文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python \\ Python37-32 \\ lib \\site-packages\\django\\db\\migrations\\recorder.py", line 44, in has_table return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()) \\ site-packages \\ django \\ db \\ migrations \\ recorder.py“,在has_table中的第44行,返回self.connection.introspection.table_names(self.connection.cursor())中的self.Migration._meta.db_table
File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\backends\\base\\base.py", line 255, in cursor return self._cursor() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\backends\\base\\base.py", line 232, in _cursor self.ensure_connection() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\backends\\base\\base.py", line 216, in ensure_connection self.connect() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\utils.py", line 89, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\backends\\base\\base.py", line 216, in ensure_connection self.connect() File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\django\\db\\backends\\base\\base.py", line 194, in connect self.connection = self.get_ 文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ backends \\ base \\ base.py”,第255行,光标返回self._cursor( )文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ backends \\ base \\ base.py”,第232行,位于_cursor self.ensure_connection( )在sure_connection self.connect()中的文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ backends \\ base \\ base.py”,第216行)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ utils.py”,第89行,在退出时从以下位置引发dj_exc_value.with_traceback(traceback) exc_value文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ backends \\ base \\ base.py”,行216,在sure_connection self.connect( )在connect self.connection =中的文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ django \\ db \\ backends \\ base \\ base.py”,第194行self.get_ new_connection(conn_params) File "C:\\Users\\elukamis\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\sql_server\\pyodbc\\base.py", line 307, in get_new_connection timeout=timeout) django.db.utils.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver]Neither DSN nor SERVER keyword supplied (0) (SQLDriverConnect); new_connection(conn_params)文件“ C:\\ Users \\ elukamis \\ AppData \\ Local \\ Programs \\ Python \\ Python37-32 \\ lib \\ site-packages \\ sql_server \\ pyodbc \\ base.py”,第307行,在get_new_connection timeout = timeout中)django .db.utils.OperationalError:('08001','[08001] [Microsoft] [ODBC SQL Server驱动程序]既不提供DSN也不提供SERVER关键字(0)(SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)') [08001] [Microsoft] [ODBC SQL Server驱动程序]无效的连接字符串属性(0)')

Does anyone have an idea on what I might be missing in my configuration ? 有谁知道我的配置中可能缺少什么?

If you're still looking for an answer, I'm not sure this will help you, but it helped me when I was getting a similar error. 如果您仍在寻找答案,我不确定这是否对您有帮助,但是当我遇到类似错误时,它对我有帮助。 SQL Server Express has TCP/IP connections disabled by default, but they apparently need to be enabled in order to allow a connection like this. SQL Server Express默认情况下禁用TCP / IP连接,但是显然需要启用它们才能允许这样的连接。

Open SQL Server Configuration Manager, expand 'SQL Server Network Configuration', and click on 'Protocols for SQLEXPRESS'. 打开SQL Server配置管理器,展开“ SQL Server网络配置”,然后单击“ SQLEXPRESS协议”。 Assuming the entry for TCP/IP shows as Disabled, right-click that and select Properties. 假设TCP / IP的条目显示为“已禁用”,右键单击该条目,然后选择“属性”。 On the 'Protocol' tab, set Enabled to Yes. 在“协议”标签上,将“启用”设置为“是”。 I also updated the 'IP Addresses' tab by entering '1433' into the TCP Port field of the 'IPAll' section (at the bottom). 我还通过在“ IPAll”部分(位于底部)的“ TCP端口”字段中输入“ 1433”来更新“ IP地址”选项卡。 Then I specified 'PORT':'1433', in the settings.py DATABASES configuration section. 然后,我在settings.py DATABASES配置部分中指定了'PORT':'1433', I'm not sure that was necessary, but following those steps allowed my app to successfully connect to SQL Server Express. 我不确定这是否必要,但是按照这些步骤进行操作可使我的应用程序成功连接到SQL Server Express。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM