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

Sage ODBC可通过Excel连接但PHP连接失效问题求助

PHP ODBC连接Sage 31版本失败的解决方案

问题复现

Sage升级至31版本后,PHP通过ODBC连接失效,但同一DSN可在Excel正常使用。已确认Sage、PHP、ODBC系统DSN均为32位,尝试PHP 8.4.4/8.1.3(32位)、PHP 8.1(64位)搭配对应驱动均失败:

  • 使用PDO连接:
    $db = new PDO('odbc:MyName');
    
    报错:The driver doesn't support the version of ODBC behaviour that the application requested.
  • 使用odbc_connect连接:
    $db = odbc_connect('MyName');
    
    报错:The driver returned invalid (or failed to return).

解决方案

1. 强制指定ODBC版本兼容参数

Sage 31的ODBC驱动可能仅支持ODBC 3.5及以下版本,PHP默认请求的版本可能不匹配,可通过连接参数或属性强制指定:

  • PDO连接(指定ODBC版本属性):
    $options = [
        PDO::ATTR_ODBC_VERSION => PDO::ODBC_VERSION_3_50
    ];
    $db = new PDO('odbc:MyName', '你的用户名', '你的密码', $options);
    
  • PDO连接(直接在连接字符串添加参数):
    $db = new PDO('odbc:MyName;ODBCVER=0x0350', '你的用户名', '你的密码');
    
  • odbc_connect连接(指定ODBC使用模式):
    $db = odbc_connect('MyName', '你的用户名', '你的密码', SQL_CUR_USE_ODBC);
    

2. 重置ODBC DSN配置并检查驱动路径

  • 打开32位ODBC数据源管理器(C:\Windows\SysWOW64\odbcad32.exe),删除现有DSN后重新创建,确保配置参数(如数据库路径、认证方式)与Excel中使用的完全一致。
  • 检查系统PATH环境变量,确保32位ODBC驱动的安装目录(通常为C:\Program Files (x86)\Sage\...下的驱动路径)优先级高于64位路径,避免PHP加载错误的驱动文件。

3. 启用ODBC跟踪定位细节

打开32位ODBC数据源管理器的「跟踪」选项卡,启用跟踪并设置日志文件路径。执行PHP连接代码后,查看跟踪日志,可获取驱动与PHP交互的详细错误信息,比如参数不兼容、驱动内部报错等,帮助定位核心问题。

4. 更换PHP ODBC扩展版本

部分PHP版本的ODBC扩展可能使用了与Sage驱动不兼容的SDK编译。尝试下载官方发布的非线程安全(NTS)版本PHP,或使用带有原生ODBC扩展的PHP安装包,避免第三方编译的扩展存在兼容性问题。


内容的提问来源于stack exchange,提问作者Antony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:27:21