联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
9.4.2 JDBC/ODBC 使用异常
更新时间:7/4/2023, 3:58:20 AM

当使用 JDBC/ODBC 客户端连接数据库时,可能因网络、驱动程序、认证方式等因素导致连接失败,本章节中,我们将介绍在使用 JDBC/ODBC 过程中常见的问题并给出解决方案。

确认故障表现

当使用 JDBC 或 ODBC 连接数据库和执行 SQL 操作时,可能会遇到以下一些常见的故障表现:

表 7.2.1:故障表现
故障表现 说明

连接失败

在尝试连接数据库时,可能会出现连接超时、连接被拒绝、无法找到数据库服务器等错误。

认证失败

在连接数据库时,可能因提供的用户名或密码错误导致认证失败。

SQL 执行错误

在执行 SQL 操作时,可能会出现语法错误、表或列不存在、权限不足、数据类型不匹配等错误信息。

数据库连接泄漏

如果没有正确关闭数据库连接,可能会导致数据库连接池耗尽或数据库性能。

程序异常中断

程序异常错误导致中断,可能因客户端版本或业务代码逻辑问题引擎。

常见问题及解决方案

应用程序中发生异常时,如 “ClassNotFoundException”、“SQLException”等,我们需要确认连接参数、SQL 语句、数据库状态等是否正确,并根据具体错误信息和日志来定位问题。

在执行故障排查前,您需要确保连接信息、认证信息、驱动程序的正确性,具体配置方法和代码示例,可参考《ArgoDB 开发者指南》的应用程序开发章节。

JDBC 建立连接部分失败

故障现象: 通过 JDBC 客户端发起建立连接请求,在连接较多时,发现部分连接建立失败。

解决方案: 可尝试调大 loginTimeout 的时间。

Pyodbc 连接时程序崩溃

故障现象:使用 Pyodbc 连接时,程序直接发生崩溃。

解决方案

  • 更换 pyodbc 版本至最新版本。

  • 如果 ArgoDB 采用了 LDAP 认证方式,请检查客户端 /etc/odbc.ini 文件中的 DSN 是否配置了用户名密码信息,如果没有,请补充后重试。

Pyodbc 中文数据插入乱码

故障现象:例如通过 cursor.execute("insert into a values (1, '中文')") 插入数据时,发现插入的数据存在乱码。

解决方案

尝试在代码中加入下述信息来设置字符编码,如不支持编码设置,升级 pyodbc 版本。

# Python 2.7
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
cnxn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
cnxn.setencoding(str, encoding='utf-8')
cnxn.setencoding(unicode, encoding='utf-8')

# Python 3.x
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
cnxn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
cnxn.setencoding(encoding='utf-8')
复制
DSN 测试成功,应用执行报错

故障现象:在 Windows 平台中,DSN 测试成功,但应用执行报错“系统错误 126,找不到指定的模块”。

解决方案

  • 确保应用和驱动程序的平台一致,例如均为 64 位。

  • 确保环境变量 PATH 中包含目录:C:\Program Files\Transwarp Inceptor ODBC Driver\Runtime

  • 上述两条确认无问题后,可尝试将 C:\Program Files\Transwarp Inceptor ODBC Driver\Runtime 下的 sasl2.dll 文件复制到 C:\Program Files\Transwarp Inceptor ODBC Driver