如何获取odbc_connect连接Progress OpenEdge数据库的详细报错信息
第一步:替换现有报错逻辑,获取ODBC详细错误信息
原有代码的die仅输出了自定义的笼统提示,可直接调用PHP内置的ODBC错误函数返回驱动层的具体报错,修改后代码如下:
$my_port = "3500"; $my_username = "my_username"; $my_password = "my_password"; $my_database = "my_db"; // 请确认此处$progress_host变量已正确赋值,你提供的代码片段中无该变量定义 $progress_host = "实际数据库主机地址"; //0 (READ UNCOMMITTED) //1 (READ COMMITTED) //2 (REPEATABLE READ) //3 (SERIALIZABLE) $my_dil = 0; $my_connection = odbc_connect( "Driver={Progress OpenEdge 11.7 Driver}; HOST=$progress_host; PORT=$my_port; DB=$my_database; UID=$my_username; PWD=$my_password; DIL=$my_dil", "", "" ) or die("连接失败,错误码:" . odbc_error() . " 错误详情:" . odbc_errormsg());
运行修改后的代码即可直接拿到驱动返回的具体错误,比如驱动不存在、端口不通、认证失败等场景的对应提示。
新开发机常见配置缺失排查点
- 检查Progress OpenEdge ODBC驱动安装情况:必须和生产环境大版本保持一致(即11.7版本),安装完成后可在系统ODBC数据源管理器中核对驱动名称,需和代码中
Driver参数填写的Progress OpenEdge 11.7 Driver完全一致,大小写、空格都不能有差异。 - 检查网络连通性:使用telnet或nc命令测试开发机到数据库主机的3500端口是否可达,确认主机防火墙、机房安全组没有拦截开发机的访问请求。
- 核对连接参数:确认数据库名、用户名、密码、隔离级别参数和生产环境配置完全一致。
- 核对驱动可选配置:部分版本的Progress OpenEdge驱动需要额外配置字符集、缓冲区大小等参数,可对比生产环境的ODBC DSN配置,补齐开发机缺失的参数。
内容的提问来源于stack exchange,提问作者Daniel L. VanDenBosch
相关产品推荐
相关产品推荐

