标签: unixodbc

在Alpine Linux Docker容器中安装ODBC驱动程序

我目前有以下Dockerfile创建我的Docker映像的方法。

FROM python:3.6.6-alpine3.8

# Add dependencies for Python packages pandas, numpy and pyodbc
RUN apk add --no-cache curl gcc g++ unixodbc-dev
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h

# Project files
ARG PROJECT_DIR=/srv/scripts
RUN mkdir -p $PROJECT_DIR
WORKDIR $PROJECT_DIR
COPY requirements.txt ./

# Install Python dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

我想在此图中包括各种ODBC驱动程序,以便可以使用它们从容器中运行的Python程序连接到不同的数据库。

  • Python程序Pyodbc用于连接数据库。
  • 我需要安装的ODBC驱动程序是:
    • PostgreSQL的
    • 的MySQL
    • 女士SQL Server
    • Teradata
    • 甲骨文
    • 蜂巢
    • 黑斑羚

我想从PostgreSQL开始,认为它是最简单的,但是我在Alpine Linux Package Manager中找不到任何软件包。您知道如何安装这样的驱动程序吗?

odbc unixodbc pyodbc docker dockerfile

6
推荐指数
2
解决办法
5352
查看次数

无法使用 unixodbc、libmyodbc 连接到远程 mysql 服务器

我对此有点不满意,我希望我遇到的问题很简单...编辑:底部的新信息

我需要连接到远程 mysql (Amazon RDS) 数据库。

遵循几个教程后,我在客户端上安装并配置了 unixodbc 和 libmyodbc,但是当我尝试通过 isql 连接时,出现错误

[08S01][unixODBC][MySQL][ODBC 5.1 Driver]Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[ISQL]ERROR: Could not SQLConnect
Run Code Online (Sandbox Code Playgroud)

关于这个错误最令人困惑的部分是我没有尝试连接到本地数据库,而是连接到远程数据库。我在客户端上没有 mysql.sock 文件...虽然这不是问题,是吗?

我感觉到配置错误,但我不确定它可能是什么。

如果我运行 odbcinst -j 那么输出是:

DRIVERS............: /etc/unixODBC/odbcinst.ini
SYSTEM DATA SOURCES: /etc/unixODBC/odbc.ini
USER DATA SOURCES..: /root/.odbc.ini
Run Code Online (Sandbox Code Playgroud)

/etc/unixODBC/odbcinst.ini 的内容是:

[MySQL]
Description             = ODBC for MySQL
Driver          = /usr/lib64/libmyodbc5.so
Setup           = /usr/lib64/unixODBC/libodbcmyS.so
UsageCount              = 5

[MySQL ODBC 515 Driver]
Description             = ODBC 5.515 for MySQL
DRIVER          = /usr/lib64/libmyodbc5-5.1.5.so
SETUP           = /usr/lib64/unixODBC/libodbcmyS.so
UsageCount …
Run Code Online (Sandbox Code Playgroud)

mysql odbc unixodbc

5
推荐指数
1
解决办法
7741
查看次数

Unicode SQLDriverConnectW(): [unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序

下面是一个完整的 ODBC 程序。它所做的只是尝试使用完全限定的连接字符串打开与 SQLite 数据库的连接。我遇到的问题是,当启用 Unicode(使用SQLDriverConnectW()而不是SQLDriverConnect())时,我收到错误消息:

libc++abi.dylib: terminating with uncaught exception of type database_error: connect: IM002: [unixODBC][Driver Manager]Data source name not found, and no default driver specified
Run Code Online (Sandbox Code Playgroud)

我的odbc.ini文件是空的,这是我的odbcinst.ini文件的内容:

[SQLite3]
Description=SQLite ODBC Driver
Driver=/usr/local/Cellar/sqliteodbc/0.9992/lib/libsqlite3odbc-0.9992.dylib
Setup=/usr/local/Cellar/sqliteodbc/0.9992/lib/libsqlite3odbc-0.9992.dylib
Threading=2
Run Code Online (Sandbox Code Playgroud)

在代码的顶部有一个#if 1可以在 Unicode 和非 Unicode 之间切换代码(将其更改#if 0为禁用 Unicode)。当我启用 Unicode 时,出现错误。当我禁用的Unicode,它的作品完美。有什么想法为什么 Unicode 版本的 connect 找不到我的 DSN?

/*

Build command:

clang++ -Wall -Werror \
    -std=c++14 -stdlib=libc++ \
    -I/usr/local/Cellar/unixodbc/2.3.2_1/include \
    -L/usr/local/Cellar/unixodbc/2.3.2_1/lib -lodbc \
    unittest.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ sqlite odbc unixodbc

5
推荐指数
1
解决办法
2148
查看次数

linux pyodbc freeTDS mssql服务器在一段时间后停止工作

我已成功使用pyodbc/freeTDS从和ubuntu机器连接到sql server

设置工作正常,但在一段时间后,我收到以下错误

[错误](服务器) - ('IM002','[IM002] [unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnect)')

这是我的配置

ODBC.INI

[SERVERONE]
Description="test"
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Servername=sqlserver
Database=DBONE

[SERVERTWO]
Description="test"
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Servername=sqlserver
Database=DBTWO
Run Code Online (Sandbox Code Playgroud)

.freeTDS.conf

[global]
tds version = 8.0

[sqlserver]
host = <SERVER IP>
instance = R2TEST
port = 1070
tds version = 8.0
text size = 2000000
Run Code Online (Sandbox Code Playgroud)

python模块

class base(object):

    _connection = None


    def __init__(self):
        try:
            self._conn_string = ENV.DB.CONNSTRING
            logg.debug('using connection string %s'%self._conn_string)
            self._connection = pyodbc.connect(self._conn_string)
        except Exception:
            raise 
    def _refresh_conn(self):
        self._connection = None
        self._connection = pyodbc.connect(self._conn_string)

class getConf(base):

    def __init__(self):
        super(SamlConf,self).__init__() …
Run Code Online (Sandbox Code Playgroud)

python linux unixodbc pyodbc freetds

5
推荐指数
0
解决办法
246
查看次数

在 Ubuntu 中使用 R 在 ODBC 上连接到 Microsoft SQL Server

我能够让它在 Windows 7 上完全运行,但我必须将它移到 Linux 服务器上。我现在正在 VM 中运行 Ubuntu 16.04.1 LTS 64 位以进行测试,然后再在服务器上复制该过程。

我很确定问题出在我的 FreeTDS 或 DSN 设置中。
我应该停止浪费时间而只使用 Python 吗?或者我会在 ODBC 和 unixODBC 上遇到同样的问题吗?

完整的 R 脚本:

library(RODBC)

#saving from a .csv to dataframe df
df <- read.csv("./Documents/test.csv")

#creating connection to db
conn <- odbcDriverConnect('myDSN')

#writing
sqlSave(conn, df, tablename = 'dbo.test0', append = F, rownames = F, verbose = TRUE, safer = true, fast = F)
Run Code Online (Sandbox Code Playgroud)

控制台

> conn <- odbcDriverConnect('myDSN')
Run Code Online (Sandbox Code Playgroud)

返回错误信息:

Warning messages:
1: In odbcDriverConnect("myDSN") :
  [RODBC] …
Run Code Online (Sandbox Code Playgroud)

sql-server unixodbc freetds rodbc ubuntu-16.04

5
推荐指数
1
解决办法
1881
查看次数

ubuntu 上 unixodbc 的 ODBCDM_Home 的正确值是多少

我安装unixodbcunixodbc-dev通过apt-get. 然后我安装了 oracle instantclient(基本驱动程序和 odbc 驱动程序)。现在我正在尝试运行odbc_update_ini.sh,但我为 ODBCDM_Home 参数尝试过的路径似乎都不正确。在OSX我安装的地方unixodbcbrew我能够使用它/usr/local/Cellar/unixodbc/2.3.4/来使事情正常工作。但我无法弄清楚 ubuntu/apt-get 的等效项。

ubuntu oracleclient unixodbc apt-get

5
推荐指数
1
解决办法
2832
查看次数

使用unixodbc连接数据库时出现IM004错误(macos)

在我的 Mac 上,我尝试使用 unixodbc(来自 Homebrew 的 v.2.3.7)连接到数据库。

odbcinst -j显示:

DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /Users/homer/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
Run Code Online (Sandbox Code Playgroud)

~/.odbc.ini和的部分内容/usr/local/etc/odbc.ini

[mysql-local]
description     = local server
Driver          = MySQLDriver
SERVER          = localhost
USER            = testuser
PASSWORD        = testpass
DATABASE        = testdb
Run Code Online (Sandbox Code Playgroud)

部分内容/usr/local/etc/odbcinst.ini

[MySQLDriver]
Driver          = /usr/local/lib/libodbc.dylib
Setup           = /usr/local/lib/libodbc.dylib
FileUsage       = 1
Run Code Online (Sandbox Code Playgroud)

驱动程序/安装文件链接到一个链接到实际驱动程序的文件:/usr/local/Cellar/unixodbc/2.3.7/lib/libodbc.2.dylib。我已将此文件的权限设置为 755。

然后我尝试连接:

isql mysql-local testuser testpass -v
Run Code Online (Sandbox Code Playgroud)

结果是: …

mysql macos unixodbc rstudio

5
推荐指数
0
解决办法
721
查看次数

无法打开 lib '/usr/local/lib/libmsodbcsql.13.dylib':找不到文件

我在 python 中工作。我使用 Macbook 进行开发,操作系统版本是 Catalina。我正在尝试使用 pyodbc 连接 MSSQL Server。我也安装了 SQL 驱动程序及其依赖项。但是在连接时我收到此错误。

Exception -  ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libmsodbcsql.13.dylib' : file not found (0) (SQLDriverConnect)")
Run Code Online (Sandbox Code Playgroud)

我检查了文件路径'/usr/local/lib/libmsodbcsql.13.dylib'。实际上文件在那里可用。谁能帮我?

unixodbc pyodbc

5
推荐指数
1
解决办法
1440
查看次数

苹果 M1 上 SQL Server 的 ODBC 驱动程序 17

我试图让 SQL Server 的 ODBC 驱动程序 17 工作,但不知何故它不在我全新的苹果 M1 上。显然我安装了 unixodbc 和驱动程序,但启动它们不起作用。看起来 odbc 驱动程序还没有为架构做好准备(见下面的输出)。甚至看起来不像是微软驱动程序的问题,而是来自 unixodbc 的通用库——我说得对吗?

如果可以自己编译,有什么想法吗?

XXX@M1 ~ % odbcinst -j
unixODBC 2.3.9
DRIVERS............: /opt/homebrew/etc/odbcinst.ini
SYSTEM DATA SOURCES: /opt/homebrew/etc/odbc.ini
FILE DATA SOURCES..: /opt/homebrew/etc/ODBCDataSources
USER DATA SOURCES..: /Users/XXX/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
XXX@M1 ~ % sqlcmd
dyld: Library not loaded: /usr/local/lib/libodbc.2.dylib
  Referenced from: /opt/homebrew/bin/sqlcmd
  Reason: no suitable image found.  Did find:
    /usr/local/lib/libodbc.2.dylib: mach-o, but wrong architecture
    /usr/local/lib/libodbc.2.dylib: mach-o, but wrong architecture
    /opt/homebrew/Cellar/unixodbc/2.3.9/lib/libodbc.2.dylib: mach-o, but wrong …
Run Code Online (Sandbox Code Playgroud)

odbc unixodbc apple-m1

5
推荐指数
1
解决办法
2007
查看次数

[unixODBC][驱动程序管理器]无法打开lib'/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib':找不到文件

我正在尝试让 Cloudera Impala ODBC 在全新的M1 Mac上运行。为此,我通过官方 MS 文档安装了 MS ODBC 18 ,并遵循了Cloudera ODBC 连接器安装指南

但是,当尝试连接时,我收到以下错误:

[Error: [odbc] Error connecting to the database] {
  odbcErrors: [
    {
      state: '01000',
      code: 0,
      message: "[unixODBC][Driver Manager]Can't open lib '/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib' : file not found"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的 ODBC 安装:

myuser@computer ~ % odbcinst -j
unixODBC 2.3.11
DRIVERS............: /opt/homebrew/etc/odbcinst.ini
SYSTEM DATA SOURCES: /opt/homebrew/etc/odbc.ini
FILE DATA SOURCES..: /opt/homebrew/etc/ODBCDataSources
USER DATA SOURCES..: /Users/myuser/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW …
Run Code Online (Sandbox Code Playgroud)

odbc unixodbc cloudera

5
推荐指数
1
解决办法
1070
查看次数