sql - 尝试连接 DB2 数据库时出现 SQL 错误 -4903
问题描述
尝试使用 SQC 代码连接到 DB2 数据库时,我收到一个 SQL 错误代码 -4903(这是一个 ANSI C 应用程序,因此我需要使用 SQC 进行 SQL 查询)。当我查看 IBM 的网站以了解 -4903 的含义时,它所说的只是“函数名称的参数 n 的长度无效”。但是我不知道它指的是哪个参数或函数。我曾尝试查看 SQLCA 对象成员,但我无法在 Visual Studio 2015 中看到它们。
这是在 Visual Studio 2015 中调试的 ANSI C 应用程序。我可以使用 DB2 命令提示符连接到同一个数据库(即,通过运行“db2 connect to dbname user username using password”。但是当我尝试在代码我得到-4903错误。我也在两个不同的操作系统Windows 7和Windows 10上试过这个。我有同事在Windows 7机器上没有问题。
while ((retry++ < 3)
|| (sqlca.sqlcode == -30080)
|| (sqlca.sqlcode == -900 ) )
{
EXEC SQL CONNECT TO :DBName USER :userid USING :pword;
if ((SQLCODE == 0 ) || (SQLCODE == (-1026)))
{
return(1);
}
else
{
dbLogAudit(KLCB, PLCB, KLLOGSEV(T),
"Retry DBInit/sqlca.sqlcode : %i", sqlca.sqlcode);
}
}
我希望 SQLCODE 为 0,这表示连接成功,并且函数将 1 返回给它的调用者。但是 sqlca.sqlcode 变量是 -4903(我在上面描述过)。
编辑:我发现参数被传递到错误消息中。完整的错误文本是“函数 sqlastrt_trusted 的参数 runtime_pid 的长度无效”。
解决方案
我解决了我自己的问题。感谢毛帮助调试这个。
我的 DB2 开发环境运行的是 8.1.0 版,它使用 162 字节来存储名为“sqla_program_id”的结构。但是,对同一结构使用 292 字节的运行时环境是 10.5 版。一旦我将我的开发 DB2 实例升级到 v10.5,它就像一个魅力。
推荐阅读
- python - 使用 subprocess.Popen() 后关闭 process.stdout
- javascript - localtunnel 如何在后台工作?
- c# - 文本框将字母转换为数字
- facebook-graph-api - Facebook Graph API:远程服务器返回错误:(400) Bad Request 而不是内部错误
- javascript - 匹配属性的正则表达式
- java - 如何在java中包装一个泛型类
- html - 这种在没有 API 密钥的情况下动态嵌入 Google 地图的特定方法是否适用于 1000 次页面浏览量?
- excel - 在不使用 Excel.Application 的情况下将多个 CSV 合并为一个
- algorithm - 将arraylists1和arraylist2之间相等的自定义对象移除到arraylist1中
- nativescript - 按钮按下动画不适用于边框半径