【问题标题】:PHP - odbc_connect() - SQL errorPHP - odbc_connect() - SQL 错误
【发布时间】:2018-09-27 01:31:44
【问题描述】:

我正在尝试使用odbc_connect 连接IBM-DB2 数据库。下面是测试IBM-DB2数据库连接的示例脚本

$conn = odbc_connect("DRIVER={IBM DB2};SERVER=10.100.200.99;DATABASE=TESTDB;","john","doe");
if (!($conn)) { 
  echo "<p>Connection to DB via ODBC failed: ";
  echo odbc_errormsg ($conn );
  echo "</p>\n";
}

Windows 中执行时会抛出异常

警告:odbc_connect():SQL 错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序,SQL 状态 IM002

Linux 中执行时会抛出异常

警告:odbc_connect():SQL 错误:[unixODBC][IBM][CLI Driver] SQL30081N 检测到通信错误。沟通 正在使用的协议:“TCP/IP”。正在使用的通信 API: “插座”。检测到错误的位置:“127.0.0.1”

  • 如何解决上述错误并连接到IBM-DB2 数据库?

【问题讨论】:

    标签: php db2 odbc


    【解决方案1】:

    odbc_connect documentation

    如果您在连接字符串中仅使用 DSN,则 odbc.ini(或等效项)需要指定其他详细信息(主机名/IP 地址、端口号、数据库名称)等。

    如果您没有在连接字符串中使用 DSN,那么该连接字符串必须包含 Db2 服务器的主机名/IP 地址,以及端口号和数据库名称以及您需要的任何其他属性。

    您在 Linux 上的症状很可能是由于连接字符串或 DSN 定义不正确或不完整、未启动 Db2-instance 或 Db2-instance 未侦听指定 IP 地址上的指定端口号等简单问题。

    PHP 与 Windows/Unix 等上的 Db2 配合良好。

    考虑对 PHP 使用 pdo_ibm 或 ibm_db2 扩展以更好地集成 PHP 和 Db2(尽管这些与您的症状无关)。

    【讨论】:

    • 在这种特殊情况下,很可能是PORTPROTOCOL。例如,"DRIVER={IBM DB2};SERVER=10.100.200.99;DATABASE=TESTDB;PORT=50000;PROTOCOL=TCPIP;" 可能是非 SSL 连接的常见默认值
    • 感谢您的回复。您能否发布一个用于连接的 php-ibm_db2 sn-p 以使我清楚
    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多