You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的ibm_db模块SSL连接DB2遇文件打开错误求助

解决ibm_db连接DB2 SSL时出现的CLI0157E文件打开错误

问题重现

使用Python的ibm_db模块通过SSL连接DB2数据库时执行以下代码:

import ibm_db
# import time,random
conn = ibm_db.connect("DATABASE=bludb;HOSTNAME=21fecfd8-47b7-4937-840d-d791d0218660.bs2io90l08kqb1od8lcg.databases.appdomain.cloud;PORT=31864;SECURITY=SSL;SSLServerCertificate=DigiCertGlobalRootCA.crt;UID=vpl67398;PWD=c8CTODyXcPc9RJTp",'','')
sql = "SELECT * FROM Users"
stmt = ibm_db.exec_immediate(conn,sql)
dic = ibm_db.fetch_both(stmt)
print(dic) 

触发错误:

Exception: [IBM][CLI Driver] CLI0157E  Error opening a file. SQLSTATE=HY507 SQLCODE=-99999

解决步骤

  • 检查证书文件路径正确性
    错误核心是驱动找不到指定的DigiCertGlobalRootCA.crt证书文件。确保:

    1. 证书文件在当前Python脚本的执行目录下,或直接使用绝对路径指定位置,比如SSLServerCertificate=C:/certs/DigiCertGlobalRootCA.crt(Windows)、SSLServerCertificate=/home/user/certs/DigiCertGlobalRootCA.crt(Linux/macOS)。
    2. 文件名拼写完全正确,Linux/macOS系统要注意大小写区分。
  • 验证文件读取权限
    确保运行Python脚本的用户拥有该证书文件的读取权限。Linux/macOS下可执行命令:

    chmod +r DigiCertGlobalRootCA.crt
    
  • 确认证书文件有效性
    重新下载官方的DigiCert Global Root CA证书,避免文件损坏。确保获取的是PEM格式的有效证书文件。

  • 简化连接字符串测试
    先移除连接字符串中的非必要参数,只保留SSL和认证核心参数测试连接,逐步排查其他可能的干扰项。

内容的提问来源于stack exchange,提问作者Pragadeesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:41:12