在为我当前的django项目进行迁移时遇到错误。
下面的是写入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',
},
},
}
但是当我运行“ python manage.py migration
时出现以下错误回溯(最近通话最近):文件 “ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ base \ base.py”, 确保连接中的第216行 self.connect()文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ base \ base.py”, 线194,在连接中 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)')
上述异常是以下异常的直接原因:
回溯(最近一次通话最后一次):文件“ manage.py”,第15行,在 execute_from_command_line(sys.argv)文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ 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 \ core \ management__init __。py”, 行375,在执行 self.fetch_command(subcommand).run_from_argv(self.argv)文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ 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,**选项)文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ management \ base.py” , 第83行,缠绕 res = handle_func(* args,** kwargs)文件“ 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行,初始化 self.loader = MigrationLoader(自我连接)文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ migrations \ loader.py”, 第49行,初始化 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 = records.applied_migrations()文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ migrations \ recorder.py”, 第61行,位于Applied_migrations中 如果self.has_table():文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ migrations \ recorder.py”, has_table中的第44行 在self.connection.introspection.table_names(self.connection.cursor())中返回self.Migration._meta.db_table
文件 “ 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”, _cursor中的第232行 self.ensure_connection()文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ base \ base.py”, 确保连接中的第216行 self.connect()文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ utils.py”, 第89行,退出 从exc_value文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ base \ base.py”中提高dj_exc_value.with_traceback(traceback), 确保连接中的第216行 self.connect()文件“ C:\ Users \ elukamis \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ db \ backends \ base \ base.py”, 线194,在连接中 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中 超时=超时)django.db.utils.OperationalError:('08001','[08001] [Microsoft] [ODBC SQL Server驱动程序] DSN或SERVER 提供的关键字(0)(SQLDriverConnect); [08001] [Microsoft] [ODBC SQL 服务器驱动程序]无效的连接字符串属性(0)')
有人对我的配置中可能缺少的东西有任何想法吗?
答案 0 :(得分:0)
如果您仍在寻找答案,我不确定这是否会对您有所帮助,但是当我遇到类似错误时,它对我有帮助。默认情况下,SQL Server Express的TCP / IP连接处于禁用状态,但是显然需要启用它们才能允许这样的连接。
打开SQL Server配置管理器,展开“ SQL Server网络配置”,然后单击“ SQLEXPRESS协议”。假设TCP / IP的条目显示为“已禁用”,右键单击该条目,然后选择“属性”。在“协议”标签上,将“启用”设置为“是”。我还通过在“ IPAll”部分(位于底部)的“ TCP端口”字段中输入“ 1433”来更新“ IP地址”选项卡。然后,我在settings.py DATABASES配置部分中指定了'PORT':'1433',
。我不确定这是否必要,但是按照这些步骤进行操作可使我的应用程序成功连接到SQL Server Express。