1/sybase数据库正常启动,isql可以正常登陆,但是使用如下C++语句时候出现的问题:
db = RWDBManager::database(
"libctl63-md.so",
"servername",
"username",
"password",
"databasename");
if ( !db.isValid() )
{
cerr < < "Connection Failure " < < db.status().errorCode() < < endl;
cerr < < db.status().message().data() < < endl;
}
打印出来是:
Connection Failure 4
[DBNOTFOUND]No Access Module for'libctl63-md.so'
2、相关环境中 LD_LIBRARY_PATH 中有 libctl63-md.so 所在的目录路径;程序执行的时候包含了$SYBASE的路径。
解决:
问题终于定位出来了,原来是sourcepro和库和sybase不匹配。例如下面几个not found 就是如此。在sybase下面找不到这几个库。
bash-2.03$ ldd libctl63-md.so
libsybblk_r.so => (not found)
libsybct_r.so => (not found)
libsybcs_r.so => (not found)
libsybcomn_r.so => (not found)
libsybtcl_r.so => (not found)
libsybintl_r.so => (not found)
libnsl.so.1 => /usr/lib/libnsl.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libc.so.1 => /usr/lib/libc.so.1
libmp.so.2 => /usr/lib/libmp.so.2
/usr/platform/SUNW,Ultra-60/lib/libc_psr.so.1
找到了对应的库就搞定了。