【发布时间】:2021-09-26 04:29:32
【问题描述】:
我已经为这个问题寻找了几个小时的答案,但不幸的是,我能找到的最接近的是 1 个未回答的问题。 This 是类似的问题,但遗憾的是没有解决方案。
我有一个与 IBM DB2 数据库的有效连接,但 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
【问题讨论】:
-
你是说你在那一行插入了一个调试器断点?您是否尝试过“进入”
ibm_db.connect函数以查看该库中发生了什么? -
那是正确的,我在调试器上完成了它,发现它没有继续。我踏入了
ibm_db.connect,但什么也没发生:/ -
你可以使用 jdbc 连接,使用相同的连接细节吗? python 使用 CLI 驱动程序而不是 jdbc。您的 IP 连接详细信息可能不正确,或者您的防火墙沿路径某处阻止了该端口。您的问题表明您不使用 SSL,所以如果您不这么认为,那么您的连接字符串可能不正确。
-
只是一个预感:你在使用 VSCode 吗?您可能需要禁用一个非常小的调试选项来跟踪第 3 方代码:stackoverflow.com/a/56038698/235992 这可能会解决“什么都没有发生”。