docker - 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
任何帮助表示赞赏,谢谢
解决方案
推荐阅读
- c# - 如何使用团队应用程序打开本地应用程序(例如自助服务门户)。我正在使用 bot 框架 v4 进行开发,它是一个聊天机器人项目
- php - CodeIgniter 登录控制器表单身份验证不起作用
- amazon-web-services - AWS API Gateway 从 POSTMAN 工作,但不是从 AWS Lambda 函数
- c - 用循环填充列表的问题 - C 语言
- c++ - 如何向 task.json 添加多个包含路径?
- c - C程序没有输出
- openlayers - Openlayers - 从特定投影转换多边形,如 EPSG:28992
- javascript - Discord.js:如果用户输入特定字符串,如何将用户从任何语音通道移动到某个语音通道?
- html - Expand/Collapse sidebar by pressing it's border
- sql-server - SSMS 备份集列表 - 这里应该显示什么?