You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内通过PHP连接Hyperfile SQL数据库失败求助

Docker容器内连接Hyperfile SQL数据库(PHP)失败求助

问题概述

尝试在Docker容器内连接Hyperfile SQL数据库,最终要通过PHP实现连接,但目前isql命令和PHP代码均连接失败。

错误信息

isql命令执行错误

root@5b0aa50b8fd8:/tmp# isql -v hyperfile
[I][unixODBC]I
[ISQL]ERROR: Could not SQLConnect

PHP连接失败

$hf_hostname = "172.22.1.31";
$hf_port = "4900";
$hf_database = "noyau";
$hf_user = "****";
$hf_password = "****";
$hf_dsn = sprintf("odbc:DRIVER={HFSQL};Server Name=%s;Server Port=%s;Database=%s;UID=%s;PWD=%s;", $hf_hostname, $hf_port, $hf_database, $hf_user, $hf_password);
$hf_dbh = new PDO($hf_dsn);

=> SQLSTATE[0] SQLDriverConnect: 0 I 

配置文件详情

Dockerfile

# 使用Ubuntu基础镜像
FROM ubuntu:latest

# 更新软件包并安装unixodbc相关工具
RUN apt-get update && apt-get install -y unixodbc unixodbc-dev odbcinst unzip libiodbc2-dev

# 复制HFSQL驱动及ODBC配置文件到容器
COPY wxpackodbclinux64.zip /usr/local/lib/wxpackodbclinux64.zip
RUN cd /usr/local/lib/ \
    && unzip /usr/local/lib/wxpackodbclinux64.zip \
    && chmod 777 -R ./  \
    && ./install.sh

COPY odbcinst.ini /etc/
COPY odbc.ini /etc/

ENV ODBCINI=/etc/odbc.ini
ENV ODBCSYSINI=/etc

# 配置ODBC驱动
RUN odbcinst -i -d -f /etc/odbcinst.ini
RUN odbcinst -i -s -l -f /etc/odbc.ini

RUN echo "/usr/local/lib" > /etc/ld.so.conf.d/hfsql.conf && ldconfig

# 复制应用代码
COPY . /app
WORKDIR /app
CMD ["tail", "-f", "/dev/null"]

odbc.ini

[ODBC Data Sources]
hyperfile = HFSQL

[hyperfile]
Description=HFSQL
Driver=HFSQL
Server Name=172.22.1.31
Server Port=4900
Database=noyau
UID=admageo
PWD=yu1209*

odbcinst.ini

[HFSQL]
Description=HFSQL Driver
Driver=/usr/local/lib/wd230hfo64.so

2024年2月27日更新

经@VonC提示,wd230hfo64.so与unixODBC不兼容,尝试改用iodbtest测试连接,仍无法正常运行:

指定登录信息测试

Starting program: /usr/bin/iodbctest Driver=\{HFSQL\}\;Server=172.22.1.31:4900\;Database=noyau\;User=****\;Password=***\*\;
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0812.0326
[New Thread 0x7ffff7d61640 (LWP 3120)]

Thread 1 "iodbctest" received signal SIGSEGV, Segmentation fault.
__wcslen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:74
74      ../sysdeps/x86_64/multiarch/strlen-avx2.S: No such file or directory.
(gdb) exit
A debugging session is active.

        Inferior 1 [process 3117] will be killed.

使用DSN测试

Starting program: /usr/bin/iodbctest DSN=hyperfile
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0812.0326
[New Thread 0x7ffff7d61640 (LWP 3100)]
[New Thread 0x7ffff7d50640 (LWP 3101)]
[New Thread 0x7ffff7d3f640 (LWP 3102)]
[Thread 0x7ffff7d50640 (LWP 3101) exited]
[Thread 0x7ffff7d3f640 (LWP 3102) exited]
1: SQLDriverConnect = L'acc (0) SQLSTATE=0800
1: ODBC_Connect = L'acc (0) SQLSTATE=0800
[Thread 0x7ffff7d61640 (LWP 3100) exited]

Have a nice day.[Inferior 1 (process 3097) exited normally]

寻求解决该问题的帮助或建议,感谢支持。


内容的提问来源于stack exchange,提问作者jeremy.raf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:57:08