iT邦幫忙

0

使用PHP連接unixODBC失敗

我想使用php連接hadoop集群中的hive透過unixODBC並且搭配Hortonworks hive-odbc driver來達成這個目標

上次我有在這邊發問有關於 hive-odbc設定的問題,不過沒有人回覆

經過快一個月後我找到了一篇設定hive-odbc driver的文章並照著上面的教學設定成功

https://community.cloudera.com/t5/Community-Articles/Hive-ODBC-Setup-with-UnixODBC-and-Debug-Logging/ta-p/247160
(這是我找到的教學)

https://ithelp.ithome.com.tw/upload/images/20191107/20114173M76yqAvZ3y.png

以上是我在hadoop集群中某台datanode架設unixODBC並使用isql查詢到hive資料庫中的表

接下來我就嘗試寫一個網頁透過unixODBC來連接hive但是顯示以下錯誤訊息
https://ithelp.ithome.com.tw/upload/images/20191107/20114173WA1A5tXJdQ.png

我本來以為是php-odbc不支持我這樣操作,但是我看到有人成功的案例
https://community.cloudera.com/t5/Support-Questions/How-to-connect-PHP-with-HIVE-through-THRIFT/td-p/185484

https://ithelp.ithome.com.tw/upload/images/20191107/20114173T1JMZat1us.png

https://ithelp.ithome.com.tw/upload/images/20191107/20114173klcLCc5ZKo.png

上面是我的odbc.ini與odbcinst.ini的設定

希望有人可以告訴我哪邊設定有問題,導致我php沒辦法與unixODBC連接失敗

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2019-11-07 19:46:09

把 Data Source Name 改成一樣試試看

目前
ini 裡是 Hive_odbc_64
程式裡是 hive_odbc_64

我不確定大小寫有沒有差別
但是你提供的那個「成功」的文章裡
DSN 是連大小寫都一致的

看更多先前的回應...收起先前的回應...

感謝回覆,我剛剛有改成一樣的名稱且大小寫一致了,但是還是沒辦法連過去

因為錯誤訊息有「Data Source Name not found」
建議往這個方向找問題
例如:找不到 odbc.ini/odbcinst.ini 的放置位置

墨嗓 iT邦研究生 4 級 ‧ 2019-11-09 00:33:47 檢舉

嘗試把 odbc.ini/odbcinst.ini 放在 /etc 底下看看

墨嗓
昨天switch壞掉了,換了一台之後錯誤訊息一直顯示這個
有辦法解嗎?

PHP Warning:  odbc_connect(): SQL error: [unixODBC][Hortonworks][ThriftExtension] (9) Error occurred while authenticating via SASL. Error details: SASL(-4): no mechanism available: No worthy mechs found, SQL state 28000 in SQLConnect 

因為我不管有沒有改odbc.ini跟odbcinst.ini的錯誤訊息都是這個,可能這個問題要先解掉在試試目錄有沒有用了

墨嗓
我把odbc.ini跟odbcinst.ini放在/etc/etc底下就產生上面那個bug了,看了好幾天才發現是那個在搞鬼,刪掉之後就回到一開始的bug了PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect

墨嗓 iT邦研究生 4 級 ‧ 2019-11-11 16:54:55 檢舉

我手邊沒有類似的環境可以幫你測試,但從兩則錯誤訊息來看。
我反而覺得:

PHP Warning:  odbc_connect(): SQL error: [unixODBC][Hortonworks][ThriftExtension] (9) Error occurred while authenticating via SASL. Error details: SASL(-4): no mechanism available: No worthy mechs found, SQL state 28000 in SQLConnect 

這一段錯誤訊息已經是有吃到 odbc.ini, odbcinst.ini 的設定值之後的錯誤訊息,要緊接著修正 SASL 的問題,看起來照著錯誤訊息搜尋,你可以找到還需要補裝一些工具。

PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect

是還沒吃到 ODBC 設定。

墨嗓感謝你的回覆,經過半個月try and error之後出現了新的問題,照你說的把odbc.ini放進/etc底下之後應該是真的有吃到設定了,然後它就要求我要開啟SSL了,我把新的問題放在另一篇發問,如果你剛好知道怎麼解的話,希望你可以到另一篇回覆,感謝

我要發表回答

立即登入回答