使用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证书文件。确保:- 证书文件在当前Python脚本的执行目录下,或直接使用绝对路径指定位置,比如
SSLServerCertificate=C:/certs/DigiCertGlobalRootCA.crt(Windows)、SSLServerCertificate=/home/user/certs/DigiCertGlobalRootCA.crt(Linux/macOS)。 - 文件名拼写完全正确,Linux/macOS系统要注意大小写区分。
- 证书文件在当前Python脚本的执行目录下,或直接使用绝对路径指定位置,比如
验证文件读取权限
确保运行Python脚本的用户拥有该证书文件的读取权限。Linux/macOS下可执行命令:chmod +r DigiCertGlobalRootCA.crt确认证书文件有效性
重新下载官方的DigiCert Global Root CA证书,避免文件损坏。确保获取的是PEM格式的有效证书文件。简化连接字符串测试
先移除连接字符串中的非必要参数,只保留SSL和认证核心参数测试连接,逐步排查其他可能的干扰项。
内容的提问来源于stack exchange,提问作者Pragadeesh
相关产品推荐
相关产品推荐

