我已经为此寻找了几个小时的答案,但不幸的是,我能找到的最接近的东西是一个未回答的问题This是一个类似的问题,但不幸的是,它没有一个决议
我有一个与IBMDB2数据库的工作连接,但web控制台出错,因此我被迫删除该实例并创建一个新实例。除了用于连接的值之外,我没有更改任何关于连接的代码的内容。当我更改这些值时,ibm_db.connect函数将持续运行。没有输出错误,因为我让它运行了10分钟,什么也没发生。我确实更改了值以强制执行错误,它会错误地指出值不正确。我不知道问题出在哪里,因为我没有任何信息可以提供。我唯一的想法是SSL可能与此有关
dsn_driver = connection_data['dsn_driver']
dsn_database = connection_data['dsn_database']
dsn_hostname = connection_data['dsn_hostname']
dsn_port = connection_data['dsn_port']
dsn_protocol = connection_data['dsn_protocol']
dsn_uid = connection_data['dsn_uid']
dsn_pwd = connection_data['dsn_pwd']
dsn = (
"DRIVER={0};"
"DATABASE={1};"
"HOSTNAME={2};"
"PORT={3};"
"PROTOCOL={4};"
"UID={5};"
"PWD={6};").format(dsn_driver, dsn_database, dsn_hostname,
dsn_port, dsn_protocol, dsn_uid, dsn_pwd)
try:
connection = ibm_db.connect(dsn, "", "")
print("Connected to database: ", dsn_database,
"as user: ", dsn_uid, "on host: ", dsn_hostname)
return connection
except:
print("Unable to connect: ", ibm_db.conn_errormsg())
断点位于connection = ibm_db.connect(dsn, "", "")
此数据从本地JSON文件加载,具有以下值(敏感信息除外)
{
"dsn_driver": "{IBM DB2 ODBC DRIVER}",
"dsn_database":"BLUDB",
"dsn_hostname": "hostname",
"dsn_port": "port",
"dsn_protocol": "TCPIP",
"dsn_uid": "uid",
"dsn_pwd": "pwd"
}
我已经尝试了我能想到的一切,但由于没有结果,我不幸地不知道从哪里开始。如果有人有这方面的经验,请让我知道
多谢各位
编辑:我最终得到了从ibm_db.connect方法返回的这个错误消息
Unable to connect: [IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "xxx.xx.xxx.xxx". Communication function detecting the error: "recv". Protocol specific err SQLCODE=-30081054", "*", "0". SQLSTATE=08001
需要澄清的几点:
要验证您和数据库之间是否存在网络连接,可以尝试telnet xxxxxx 1234(或nc xxxxxx 1234,其中xxxxxx和1234分别是服务主机名和端口)
从调试的角度来看,我将查看介入进程的日志:
正如您所指出的,如果没有错误消息,很难知道从哪里开始
相关问题 更多 >
编程相关推荐