sql-server - 无法在 Raspbian 10(Buster)上为 SQL Server 获取 ODBC 驱动程序 17
问题描述
我试图在我的树莓派上安装“ODBC Driver 17 for SQL Server”但没有成功。
1 这是我试过的
FROM arm32v7/python:3
RUN apt-get update
1. Install dependencies for PyODBC and tds
RUN apt-get install -y tdsodbc unixodbc-dev
RUN apt install unixodbc-bin -y
RUN apt-get clean -y
2. Edit /etc/odbcinst.ini
RUN echo "[FreeTDS]\n\
Description = FreeTDS unixODBC Driver\n\
Driver = /usr/lib/arm-linux-gnueabi/odbc/libtdsodbc.so\n\
Setup = /usr/lib/arm-linux-gnueabi/odbc/libtdsS.so" >> /etc/odbcinst.ini
3. Install requirements (contains pyodbc)
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
Copy and run my app
COPY . .
CMD [ "python", "app.py"]
我的代码:
import pyodbc
def inserare(operator,loc_munca,comanda,stare,data,ora,bucati):
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=.\SQLEXPRESS;DATABASE=database;UID=pi;PWD=pass')
cursor = conn.cursor()
cursor.execute("insert into Pontaj values (?,?,?,?,?,?,?)",operator,loc_munca,comanda,stare,data,ora,bucati)
cursor.commit()
cursor.close()
来自 python 外壳的错误
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib >'ODBC Driver 17 for SQL Server': 找不到文件 (0) (SQLDriverConnect)")
来自终端的错误
sudo apt-get install freetds-dev freetds-bin unixodbc-dev tdsodbc 读取包列表...完成 构建依赖树
读取状态信息...完成 包 tdsodbc 不可用,但被另一个包引用。这可能意味着该软件包丢失、已过时或只能从其他来源获得E: 无法定位软件包 freetds-dev
E: 无法定位软件包 freetds-bin
E: 包 'tdsodbc' 没有安装候选
解决方案
我设法通过修改 /etc 上的 odbc.ini 和 odbcinst.in 解决了这个问题。修改这些文件后,我能够连接到数据库。我认为 ODBC 17 是空白的,这就是问题所在。
odbc.ini
Driver = FreeTDS
Description = My Test Server
Trace = No Server
Name = mssql
Port = port
instance = ip\SQLEXPRESS
Database = yourdatabase
TDS_Version = 4.2
odbcinst.ini
Description=FreeTDS
Driver v0.91
Driver=/usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
Setup=/usr/lib/arm-linux-gnueabihf/odbc/libtdsS.so
fileusage=1
dontdlclose=1
UsageCount=1
推荐阅读
- javascript - 如果组件在其渲染函数中返回null,为什么会触发componentDidMount?
- c# - c#将Json加载到继承的类中
- python - CodingBat Python make_chocolate 代码在“其他测试”中失败
- c++ - Qt moveToThread,带参数的信号/槽
- asp.net - ParamQuery 网格 (PQGrid) 将新行添加到嵌套网格
- javascript - Hyperledger Fabric - 存在历史注册表时,我们是否需要用户定义的事务模型?
- java - recyclerview 没有在键盘上方滚动以获取新消息
- r - 使用 R 中的 openair 包更改多面板泰勒图的字体大小
- android - 如何在 Datepicker 布局中显示有限的年数?
- ios - UITextView 高度不会改变