我们已经使用pymssql和FreeTDS超过2年了,现在没有问题。我们最近将pymssql升级到2.1.3,并从Python 3.4升级到3.6。自从升级以来,我们间歇性地(但经常)得到以下错误。
(20017, b'DB-Lib error message 20017, severity 9:\nUnexpected EOF from the server (FBOps-Prod:1433)\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (FBOps-Prod:1433)\n')
失败没有明显的模式。 99%以上的数据库调用成功,并且在任何存储的proc或sql上都可能失败。
我在网上搜索并空了。
我重新安装了pymssql和FreeTDS,但它仍然失败。
我已经检查了最大连接数,它是4096,这应该是充足的,因为一次只有不超过10个活跃用户。
我已经确认我们正确关闭了所有数据库连接。
我认为这是一个FreeTDS错误并发布到FreeTDS邮件列表但尚未收到任何回复
以下是TDS日志文件的摘录(最后的完整日志文件)。
packet.c:639:Received packet
0000 04 01 00 11 00 5c 01 00-fd 00 00 d4 00 00 00 00 |.....\.. ........|
0010 00 - |.|
token.c:565:processing result tokens. marker is fd(DONE)
token.c:2081:tds_process_end: more_results = 0
was_cancelled = 0
error = 0
done_count_valid = 0
token.c:2098: rows_affected = 0
token.c:2101:tds_process_end() state set to TDS_IDLE
util.c:165:Changed query state from READING to IDLE
util.c:83:logic error: cannot change query state from IDLE to PENDING
我查看了FreeTDS代码,但没有足够的知识来理解它失败的原因。任何帮助表示赞赏。