使用 Docker 的 dotnet 核心 odbc vertica

时间:2021-02-24 16:13:02

标签: docker .net-core odbc vertica

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

<块引用>

例外。 System.PlatformNotSupportedException:此平台不支持 System.Data.ODBC。 在 System.Data.Odbc.OdbcConnection..ctor(String connectionString)

下面是我的 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

感谢您的帮助,谢谢

0 个答案:

没有答案
相关问题