【问题标题】:Can anyone explain the following stack trace, in step by step, please?任何人都可以逐步解释以下堆栈跟踪吗?
【发布时间】:2015-12-16 17:35:17
【问题描述】:

谁能一步一步解释以下堆栈跟踪? 我想找出错误的根本原因是什么以及错误的来源。

Traceback(最近一次调用最后一次):

1.   File "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensio ns\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 1 06, in exec_file
    exec_code(code, file, global_variables)

2.   File "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensio ns\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 8 2, in exec_code
    exec(code_obj, global_variables)

3.  File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 332, in <module>
    main()

4.      File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 296, in main
    stanoxDetails = checkTheLineHasStanox(lastLineSegment)

5.      File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 205, in checkTheLineHasStanox
    firstrow= query(queryStr, 'GetOne')

6.      File "C:\Users\ssr\FindAllCandidatePathsOfTrain.py", line 45, in query
    connection.close()

7.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 2658, in close
    self.rollback()

8.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 2581, in rollback
    check_success(self, ret)

9.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 988, in check_success
    ctrl_err(SQL_HANDLE_DBC, ODBC_obj.dbc_h, ret, ODBC_obj.ansi)

10.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 966, in ctrl_err
    raise DatabaseError(state,err_text) pypyodbc.DatabaseError: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]Co mmunication
link failure') 
Press any key to continue . . .

【问题讨论】:

  • 谷歌搜索类似的东西。

标签: python sql-server pyodbc pypyodbc


【解决方案1】:

如前所述,回溯会显示错误发生之前执行的代码行以及错误本身。在这种情况下,Python 不是错误的直接原因。

考虑:

10.      File "C:\Python34\lib\site-packages\pypyodbc.py", line 966, in ctrl_err
raise DatabaseError(state,err_text) pypyodbc.DatabaseError: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]Communication link failure')

这表明 Python 中的此错误是“传递”错误。被调用的数据库驱动程序实际上是错误的原因,而 Python 只是通过 Python 传递它。祝你好运。

【讨论】:

    【解决方案2】:

    Python Traceback 将向您显示在错误发生之前正在执行的操作以及错误所在的行。

    在这种情况下,您的模块在这一行引发了错误:

    File "C:\Python34\lib\site-packages\pypyodbc.py", line 966, in ctrl_err
    raise DatabaseError(state,err_text)
    

    并且错误文本显示在这里:

    pypyodbc.DatabaseError: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]Communication link failure')
    

    【讨论】:

    • 如果我在 Traceback 中对语句进行编号(我在原始帖子中编号的方式),那么根据您所说的以及我们在 Traceback 上看到的内容,这是一个有效的假设错误是由第 5 步或第 6 步中的某事引起的?我假设 visualstudio_py_util.py 和 pypyodbc.py 文件没有错误。
    • 是的,这是最好的假设,如果第 5 行和第 6 行正在引用您的文件(看起来确实如此),那么这可能就是导致此错误的原因。我对 pypyodbc 了解不多,但如果我不得不猜测您的错误到底是什么,我认为您可能会在第 6 行关闭连接,因为引发的错误显示“通信链路故障”
    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 2020-02-24
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多