2014-10-08 61 views
0

我嘗試設置unixodbc以使用cloudera(在Ubuntu機器中)的配置單元驅動程序連接器。使用unixODBC找不到配置單元odbc連接器錯誤消息

在我的〜/ .local/lib文件夾中,我有鏈接到由cloudera提供的.so文件, 也env變量LD_LIBRARY_PATH包含/home/luca/.local/lib:/opt/cloudera/hiveodbc/lib/64/

我創建了一個包含文件/etc/odbcinst.ini如下:

[hive] 
Description = Cloudera ODBC Driver for Apache Hive (64-bit) 
Driver  = /home/luca/.local/lib/libclouderahiveodbc64.so 
ODBCInstLib= /home/luca/.local/lib/libodbcinst.so 
UsageCount = 1 
DriverManagerEncoding=UTF-16 
ErrorMessagesPath=/opt/cloudera/hiveodbc/ErrorMessages/ 
LogLevel=0 
SwapFilePath=/tmp 

,並在我的主文件夾我有.odbc.ini包含:

[hive] 
Driver=hive 
HOST=<thehost> 
PORT=<theport> 
Schema=<theschema> 
FastSQLPrepare=0 
UseNativeQuery=0 
HiveServerType=2 
AuthMech=2 
#KrbHostFQDN=[Hive Server 2 Host FQDN] 
#KrbServiceName=[Hive Server 2 Kerberos service name] 
UID=<myuid> 

當我測試使用isql -v hive 連接我收到以下錯誤消息:

[S1000][unixODBC][DSI] The error message NoSQLGetPrivateProfileString could not be found in the en-US locale. Check that /en-US/ODBCMessages.xml exists. 
[ISQL]ERROR: Could not SQLConnect 

我該如何解決這個問題(爲什麼路徑是/ en-US /的絕對路徑)?

回答

0

在您的ODBCInstLib庫中找不到SQLGetPrivateProfileString。要麼無法加載庫,要麼庫中不包含該符號。

使用strace isql -v hive 2>&1 | grep ini來查看您的配置文件是否正在加載。使用strace isql -v hive 2>&1 | grep odbcinst.so查看它在哪裏查找庫。

確保該庫存在於給定位置並具有正確的體系結構。使用file -L /home/luca/.local/lib/libodbcinst.so檢查體系結構。使用nm /home/luca/.local/lib/libodbcinst.so | grep SQLGetPrivateProfilString檢查它是否有正確的符號。