Python的DB2连接性ibm_db.connect持续运行

2024-03-28 15:14:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为此寻找了几个小时的答案,但不幸的是,我能找到的最接近的东西是一个未回答的问题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

Tags: todbuiddataportdriverconnect错误
1条回答
网友
1楼 · 发布于 2024-03-28 15:14:56

需要澄清的几点:

  1. 当您说“ibm_db.connect函数持续运行”时,您的意思是看到CPU在旋转,还是python进程没有通过connect
  2. 您正在连接到哪种类型的数据库?DB2LUW还是z/OS
  3. 您是否已尝试确保连接仍在工作?i、 你试过其他链接帖子的建议了吗?这:

要验证您和数据库之间是否存在网络连接,可以尝试telnet xxxxxx 1234(或nc xxxxxx 1234,其中xxxxxx和1234分别是服务主机名和端口)

从调试的角度来看,我将查看介入进程的日志:

  1. Db2连接日志(如果正在使用)
  2. DB2目标日志
  3. 如果z/OS.BAQ区域是TCPIP和z/OS连接地址空间的?(不确定这是否只是我的站点)
  4. 防火墙-我知道你有一个工作连接,但总是最好检查明显的以及

正如您所指出的,如果没有错误消息,很难知道从哪里开始

相关问题 更多 >