内容纲要
概要描述
本文就 ODBC 配置完成后连不上 inceptor 的常见问题进行收录归纳,ODBC 安装配置请参考文章 Linux ODBC 连接 Inceptor。
详细说明
1. 根据手册编译安装 Driver Manager 时 make 命令报错:aclocal-1.11:command not found
该报错是因为没有装 automake,需要执行 yum install -y automake 先安装,装完后 必须 得重新解压 unixODBC 包再进行编译安装。
2. isql 连接测试报错:[ISQL]ERROR: Could not SQLConnect
通过加参数 isql -v 能看到如下错误:
[01000][unixODBC][Driver Manager]Can't open lib '/usr/local/lib64/libODBC4HiveServer2.so' : file not found
ldd /usr/local/lib64/libODBC4HiveServer2.so,能看到 libsasl2.so.2==>not found,可以通过如下软链接方式解决:
$ ln -sv /usr/lib64/libsasl2.so.3.0.0 /usr/lib64/libsasl2.so.2
3. isql 连接测试报错: SASL Other:No worthy mechd found, Segmentation faild
该报错可通过安装如下工具解决:
$ yum install cyrus-sasl-gssapi cyrus-sasl-plain -y
4. 配置文件都正确,但 isql 报 [Driver Manager]Data source name not found, and no default driver specified]
odbcinst -j 命令能发现打印的配置信息有问题,原因未知,可通过如下方式尝试解决(或加入用户环境变量,路径为安装时的 ODBC 时的实际路径,本例为 /etc)
export ODBCSYSINI="/etc"
export ODBCINI="/etc/odbc.ini"
5.isql 能成功,但是一些客户端工具(如 php)连接还是会返回第 2 点中的错误,ldd 命令检查其实还是有 libodbcinst.so.2 => not found
$ ln -sv /usr/local/lib/libodbcinst.so.2 /usr/lib64/libodbcinst.so.2
6.报错[08004][unixODBC] Failed to connect to DSN=xxx [ISQL]ERROR: Could not SQLConnect
[root@gts-spp-201~]# isql -v ldap
[08004][unixODBC] Failed to connect to DSN=ldap;DATABASE=default;DRIVER=Transwarp Inceptor ODBC Driver;FRAMED=0;HIVE=Hive Server 2;HOST=172.22.37.203;MECH=LDAP;PASSWORD=IDENTIFIER_KW_NULL;PORT=10000;USE_ESCAPE=true;USER=IDENTIFIER_KW_NULL;
[ISQL]ERROR: Could not SQLConnect
如果inceptor开启的LDAP 认证,必须在后面提供用户名和密码。
[root@gts-spp-201~]# isql -v ldap hive 123456
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
7.密码正确,各种姿势都正确,依然6的报错:[08004][unixODBC] Failed to connect to DSN=xxx [ISQL]ERROR: Could not SQLConnect
[08004][unixODBC] Failed to connect to DSN=ldap;DATABASE=default;DRIVER=Transwarp Inceptor ODBC Driver;FRAMED=0;HIVE=Hive Server 2;HOST=172.22.37.203;MECH=LDAP;PASSWORD=12345690;PORT=10000;USE_ESCAPE=true;USER=hive;
[ISQL]ERROR: Could not SQLConnect
排查一下密码中是否有特殊字符 Special character restrictions of username and password in ODBC connection for Diamond and Platinum gateways

Tips:排查过程中,可以调整 /etc/log4cplus.properties (来自 /usr/local/inceptor) 里的日志级别来协助定位