一、課程介紹 數據服務API作為數據統一服務平臺建設的最上層,能夠將數據倉庫數據以服務化、介面化的方式提供給數據使用方,屏蔽底層數據存儲、計算的諸多細節,簡化和加強數據的使用。 隨著企業“互聯網化、數字化”進程的不斷深入,越來越多的業務被遷移到互聯網上,產生大量的業務交互和對外服務需求,對API介面 ...
當我們在調試Archery的時候,連接SQL Server 會報錯,而MySQL部分沒有問題。報錯信息如下:
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
記錄下 我們是怎麼定位問題、尋找技術文檔幫助、和安裝相關組件的。
1.定位關鍵代碼
通過報錯路徑和設置斷點,很快定位的報錯代碼。
其路徑為
/sql/engines/mssql.py
報錯的方法是get_connection,具體代碼
def get_connection(self, db_name=None): connstr = """DRIVER=ODBC Driver 17 for SQL Server;SERVER={0},{1};UID={2};PWD={3}; client charset = UTF-8;connect timeout=10;CHARSET={4};""".format(self.host, self.port, self.user, self.password, self.instance.charset or 'UTF8') if self.conn: return self.conn self.conn = pyodbc.connect(connstr) return self.conn
相對比較簡單,沒啥邏輯。
2.尋找技術文檔
主要還是 https://archerydms.com/ 官方文檔
step 1 點擊 【快速開始】
step 2 找到部署相關的文檔
step 3 選擇 手動部署 部分
Step 4 選擇其中的SQL Server 部分 【安裝 MS SQL Server 驅動(需要使用MsSQL的按需安裝)】
3.安裝相關組件
上面的具體要求和步驟如下
# CentOS 6 curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo # CentOS 7 curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo # 卸載衝突驅動 sudo yum remove unixODBC-utf16 unixODBC-utf16-devel # 安裝驅動 sudo ACCEPT_EULA=Y yum install msodbcsql17 sudo ACCEPT_EULA=Y yum install mssql-tools # 更新環境變數 echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc # 安裝ODBC依賴 sudo yum install unixODBC-devel
如果yum源 或者 本地server 可以上外網,則安裝要求之間運行安裝即可。
下麵我們看看,如果因為yum源和上網許可權, server之間 yum不行怎麼辦?
我們把上面的執行拆解掉
step 1 因為 Server是 CentOS 7 ,所以,我們在可上Intent 的電腦上運行
https://packages.microsoft.com/config/rhel/7/prod.repo
下載 prod.repo 文件
step 2 用記事本方式 打開 prod.repo
裡面的內容如下:
[packages-microsoft-com-prod] name=packages-microsoft-com-prod baseurl=https://packages.microsoft.com/rhel/7/prod/ enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc
step 3 打開訪問其中的 baseurl
網址 https://packages.microsoft.com/rhel/7/prod/
看到其中是 各個 組件大全,包含各種組件包
step 4 在界面上Ctrl + F ,查找 到【msodbcsql17】 【mssql-tools】,找到 合適版本分別進行下載。
查找msodbcsql17
查找mssql-tools
註意,因本地已安裝 unixODBC-devel,所以,無需安裝。只要安裝上面的兩個組件就可以了,其他任何操作都不需要了,即相當於 只執行建議中的
# 安裝驅動 sudo ACCEPT_EULA=Y yum install msodbcsql17 sudo ACCEPT_EULA=Y yum install mssql-tools
step 4 將下載的rpm 文件 上傳的伺服器上,通過 yum localinstall 插件名 命令分別安裝即可。
step 5 安裝需要的組件後,再次調試,報錯消失了。
4.說明
梳理整理記錄於此,希望遇到類似情況,有所幫助,減少不必要的探索和掙扎。