如何解决Archery连接SQL Server时出现的驱动错误问题?

摘要:当我们在调试Archery的时候,连接SQL Server 会报错,而MySQL部分没有问题。报错信息如下: Error: ('01000', "[01000] [u
当我们在调试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 可以上外网,则安装要求之间运行安装即可。
阅读全文