首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"DPI-1047:无法找到64位Oracle客户端库:文件太短“当运行docker映像以连接到oracle数据库时

"DPI-1047:无法找到64位Oracle客户端库:文件太短“当运行docker映像以连接到oracle数据库时
EN

Stack Overflow用户
提问于 2022-01-14 05:13:52
回答 1查看 1.8K关注 0票数 0

当试图运行我的码头映像时,会出现以下错误:cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "oracle_lib/instantclient_21_4/libclntsh.so: file too short"

这是我的文件

代码语言:javascript
运行
复制
FROM python:3.9

WORKDIR /app

RUN apt-get update -y
RUN apt-get install libaio1

COPY ../requirements.txt /app
RUN pip install -r requirements.txt

COPY ./ /app
ENV PYTHONPATH "${PYTHONPATH}:/app"
ENV PATH "${PATH}:/app"

EXPOSE 5000

CMD ["python", "products/product_db.py"]

product_db.py运行以下代码来连接到数据库:cx_Oracle.init_oracle_client(lib_dir="oracle_lib/instantclient_21_4", config_dir="oracle_config/Wallet_pricedb"),它在我的计算机上运行linux时运行的非常好,并且没有显示此错误。

我已经尝试手动将所需的环境变量(如$TNS_ADMIN、$ORACLE_HOME、$LD_LIBRARY_PATH )设置到正确的位置(在vs代码中尝试通过linux连接到甲骨文数据库时也是如此),但是在运行坞映像时也会出现同样的错误。我还遵循了cx_Oracle 8安装指南的所有步骤,仍然收到相同的错误。

EN

回答 1

Stack Overflow用户

发布于 2022-01-14 22:38:58

  • 您的错误是一个系统错误“oracle/instantclient_21_4/libclntsh.so: file太短”,它被包装在
  • 消息中。看起来您有一些文件损坏或其他操作系统错误。即时客户端是如何安装的?SQL*Plus有效吗?

具有即时客户端的

  • 不设置ORACLE_HOME

  • 在Linux上,cx_Oracle.init_oracle_client(lib_dir="oracle_lib/instantclient_21_4")的唯一作用就是立即加载库。在进程开始之前,您仍然需要确保这些库在系统库搜索路径(例如LD_LIBRARY_PATH,或通过ldconfig)中。但是,请确保您通过的目录与系统搜索路径中使用的目录相同,否则可能会出现奇怪的行为或错误。

  • cx_Oracle.init_oracle_client(config_dir="oracle_config/Wallet_pricedb")内部设置TNS_ADMIN,因此它将覆盖变量

的任何值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70706265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档