首页 > 解决方案 > dotnet core odbc vertica 与 Docker

问题描述

我有一个使用 ODBC 连接到 Vertica 的 dotnet 核心应用程序System.Data.Odbc。当我在 Visual Studio 上的 Windows 机器上运行它时,它运行良好。但是我想将它容器化并在 Linux 服务器上运行它,我收到以下错误:

例外。System.PlatformNotSupportedException:此平台不支持 System.Data.ODBC。在 System.Data.Odbc.OdbcConnection..ctor(字符串连接字符串)

下面是我的 Dockerfile:

FROM mcr.microsoft.com/dotnet/core/runtime:3.0.1-buster-slim

# ODBC driver manager
RUN apt-get update \
&& apt-get install -y --no-install-recommends unixodbc-bin \
&& rm -rf /var/lib/apt/lists/*

# Vertica ODBC driver and configurations
RUN curl https://www.vertica.com/client_drivers/9.3.x/9.3.0-0/vertica-client-9.3.0-0.x86_64.tar.gz | 
tar xz opt/vertica/lib64/libverticaodbc.so opt/vertica/en-US/VerticaMessages.xml opt/vertica/en- 
US/ODBCMessages.xml

COPY odbcinst.ini /etc/
COPY vertica.ini /etc/

COPY bin/Release/netcoreapp3.0/publish/ /app
WORKDIR /app
ENTRYPOINT ["dotnet", "Loader.dll"]

我还尝试了以下方法:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime

代替

FROM mcr.microsoft.com/dotnet/core/runtime:3.0.1-buster-slim`

但同样的错误。下面是我的 odbinst.ini:

[Vertica]
Description = Vertica driver
Driver   = /opt/vertica/lib64/libverticaodbc.so
Driver64 = /opt/vertica/lib64/libverticaodbc.so

下面是我的 vertica.ini:

[Driver]
DriverManagerEncoding=UTF-16
ODBCInstLib = /usr/lib/x86_64-linux-gnu/libodbcinst.so.1
ErrorMessagesPath=/opt/vertica/lib64
LogLevel=4
LogPath=/tmp

以下是我在应用程序中打开连接的方式:

_odbcConn = new OdbcConnection(pConnectionString);

我的连接字符串:

Driver={Vertica};Server=192.168.109.1;Port=5433;Database=testdb;UID=dbadmin;PWD=test

任何帮助表示赞赏,谢谢

标签: docker.net-coreodbcvertica

解决方案


推荐阅读