SQLCODE=-1042ect:[IBM][CLI 驱动程序] SQL1042C 发生意外的系统错误。 SQLSTATE=58004

问题描述 投票:0回答:1

我正在尝试使用 Python 连接到云上的 Db2 数据库。

dsn_hostname = ".." 
dsn_uid = ".."       
dsn_pwd = ".."      

dsn_driver = "{IBM DB2 ODBC DRIVER}"
dsn_database = ".."            
dsn_port = ".."                 
dsn_protocol = "TCPIP"            
dsn_security = "SSL"



   dsn = (
    "DRIVER={0};"
    "DATABASE={1};"
    "HOSTNAME={2};"
    "PORT={3};"
    "PROTOCOL={4};"
    "UID={5};"
    "PWD={6};"
    "SECURITY={7};").format(dsn_driver, dsn_database, dsn_hostname, dsn_port, dsn_protocol, dsn_uid, dsn_pwd,dsn_security)

try:
    conn = ibm_db.connect(dsn, "", "")
    print ("Connected to database: ", dsn_database, "as user: ", dsn_uid, "on host: ", dsn_hostname)

except:
    print ("Unable to connect: ", ibm_db.conn_errormsg() )

但是,我收到此错误-:

SQLCODE=-1042ect:[IBM][CLI 驱动程序] SQL1042C 发生意外的系统错误。
SQLSTATE=58004

python db2 ibm-cloud
1个回答
2
投票

尽管 clidriver 报告的 SQL1042C 有多种可能的原因,但此答案解决了一个常见原因。

如果您使用 python 和 clidriver 运行 Microsoft Windows,那么您可能会受到 IBM clidriver(当您安装 python ibm_db 模块时默认安装)中的缺陷的影响。 此问题仅影响部分 MS-windows 工作站,而不是全部,这取决于已安装的内容以及 PATH 上已有的内容。

clidriver 以 DLL 文件的形式提供 Microsoft Visual C++ VC12 运行时的副本,但 clidriver 可能无法在运行时加载所需的 DLL 文件,然后给出无用的错误消息,且未提及问题的真正原因。通常,无法加载 vc 运行时的原因是 Windows 操作系统没有被告知在哪里可以找到所需的文件,这些文件位于 clidriver 的子目录中。

有一个解决方法,如下所述,在启动 python 脚本之前将所需的 DLL 文件放在 PATH 上。

使用

pip show ibm_db
查找 Python 站点包目录的“位置:”。例如,假设“位置:”是
c:\python\lib\site-packages

您的站点包目录将位于不同的位置,但请尝试理解这个想法。

修改 PATH 环境变量值以附加以下目录(例如):

c:\python\lib\站点包

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.