ToB企服应用市场:ToB评测及商务社交产业平台

标题: 调试Archery连接SQL Server提示驱动错误 [打印本页]

作者: 冬雨财经    时间: 2022-6-19 17:12
标题: 调试Archery连接SQL Server提示驱动错误
当我们在调试Archery的时候,连接SQL Server 会报错,而MySQL部分没有问题。报错信息如下:
  1. Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")
复制代码
记录下 我们是怎么定位问题、寻找技术文档帮助、和安装相关组件的。
1.定位关键代码

通过报错路径和设置断点,很快定位的报错代码。
其路径为 
  1. /sql/engines/mssql.py
复制代码
报错的方法是get_connection,具体代码
  1.     def get_connection(self, db_name=None):
  2.         connstr = """DRIVER=ODBC Driver 17 for SQL Server;SERVER={0},{1};UID={2};PWD={3};
  3. client charset = UTF-8;connect timeout=10;CHARSET={4};""".format(self.host, self.port, self.user, self.password,
  4.                                                                  self.instance.charset or 'UTF8')
  5.         if self.conn:
  6.             return self.conn
  7.         self.conn = pyodbc.connect(connstr)
  8.         return self.conn
复制代码
相对比较简单,没啥逻辑。
2.寻找技术文档

主要还是 https://archerydms.com/ 官方文档
step 1 点击 【快速开始】

step 2 找到部署相关的文档

 step 3 选择 手动部署 部分

 Step 4  选择其中的SQL Server 部分 【安装 MS SQL Server 驱动(需要使用MsSQL的按需安装)】

 3.安装相关组件

上面的具体要求和步骤如下
  1. # CentOS 6
  2. curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
  3. # CentOS 7
  4. curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
  5. # 卸载冲突驱动
  6. sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
  7. # 安装驱动
  8. sudo ACCEPT_EULA=Y yum install msodbcsql17
  9. sudo ACCEPT_EULA=Y yum install mssql-tools
  10. # 更新环境变量
  11. echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
  12. echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
  13. source ~/.bashrc
  14. # 安装ODBC依赖
  15. sudo yum install unixODBC-devel
复制代码
如果yum源 或者 本地server 可以上外网,则安装要求之间运行安装即可。
下面我们看看,如果因为yum源和上网权限, server之间 yum不行怎么办? 
我们把上面的执行拆解掉
step 1 因为 Server是 CentOS 7 ,所以,我们在可上Intent 的电脑上运行
  1. https://packages.microsoft.com/config/rhel/7/prod.repo
复制代码
下载 prod.repo 文件

step 2  用记事本方式 打开  prod.repo
里面的内容如下:
  1. [packages-microsoft-com-prod]
  2. name=packages-microsoft-com-prod
  3. baseurl=https://packages.microsoft.com/rhel/7/prod/
  4. enabled=1
  5. gpgcheck=1
  6. 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,所以,无需安装。只要安装上面的两个组件就可以了,其他任何操作都不需要了,即相当于 只执行建议中的
  1. # 安装驱动
  2. sudo ACCEPT_EULA=Y yum install msodbcsql17
  3. sudo ACCEPT_EULA=Y yum install mssql-tools
复制代码
step 4 将下载的rpm 文件 上传的服务器上,通过  yum  localinstall 插件名 命令分别安装即可。
step 5 安装需要的组件后,再次调试,报错消失了。
4.说明

梳理整理记录于此,希望遇到类似情况,有所帮助,减少不必要的探索和挣扎。

来源:https://www.cnblogs.com/xuliuzai/archive/2022/06/15/16377442.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4