我正在尝试使用Python中的teradatasql模块连接teradatasql。代码在本地主机上运行良好,但是一旦作为服务器代码的一部分部署到服务器上,它就会抛出错误。
守则:
import teradatasql
try:
host, username, password = 'hostname', 'username', '****'
session = teradatasql.connect(host=host, user=username, password=password, logmech="LDAP")
except Exception as e:
print(e)服务器上出现的错误:
版本16.20.0.60 teradatasql驱动程序失败,接收到Config响应消息头↵,位于gosqldriver/teradatasql。(*teradataConnection).makeDriverError TeradataConnection.go:1101↵at gosqldriver/teradatasql.(*teradataConnection).sendAndReceive TeradataConnection.go:1397↵at gosqldriver/teradatasql.newTeradataConnection TeradataConnection.go:180↵at gosqldriver/teradatasql.在database/sql.dsnConnector.Connect TeradataDriver.go:32↵/sql/sql.(*DB)数据库/sql处打开.conn sql.go:1103↵。(*DB).Conn sql.go:1619↵at main.goCreateConnection goside.go:275↵at main。_cgoexpwrap_212fad278f55_goCreateConnection _cgo_gotypes.go:240↵at runtime.call64 asm_amd64.s:574↵at runtime.cgocallbackg1 cgocall.go:316↵at runtime.cgocallbackg cgocall.go:194↵at runtime.cgocallback_gofunc asm_amd64.s:826↵at runtime.goexit asm_amd64.s:2361↵Caused读取tcp:->IP:PORT: wsarecv:现有连接被远程主机强制关闭
发布于 2020-12-17 15:01:18
此错误的根本原因由tomnolan概述为这里:
堆栈跟踪指示TCP套接字连接到数据库,然后驱动程序向数据库发送Config请求消息,然后驱动程序超时等待来自数据库的Config响应消息。 换句话说,驱动程序认为它已经建立了TCP套接字连接,但是TCP套接字连接可能并不完全成功,因为驱动程序和数据库之间的初始消息握手发生了故障。 最有可能的原因是某种网络问题阻碍了驱动程序正确地连接到数据库。
我今天有这个问题,并通过改变我的主人来解决。我还在VPN上,发现DNS中的实际主机名不起作用,但可用的别名却起作用。例如,在Windows上:
C:\WINDOWS\system32>nslookup MYDB-TEST # <-- works
Server: abcd.domain.com
Address: <OMITTED>
Name: MYDB.domain.com # <-- doesn't work
Address: <OMITTED>
Aliases: mydb-test.domain.com # <-- works我认识到,这可能是一个特定的解决方案,可能并不适用于每个人,但根据我的经验,问题的根源是TCP连接问题。
https://stackoverflow.com/questions/60967811
复制相似问题