php - DB2 i 系列上的 ZF2 Zend\Paginator\Adapter\DbSelect

标签 php zend-framework2 db2 ibm-midrange laminas-api-tools

我正在创建 Zend APIgility 应用程序 REST 服务,但我的 fetchAll Mapper 函数出现问题。

我正在通过 Windows 应用服务器上的 DB2 Connect 连接到在 i 系列服务器 (AS/400) 上运行的 IBM DB2 数据库。

我的连接是在我的 local.php 中建立的:

return array(
    'db' => array(
        'driver' => 'IbmDb2',
        'database' => $database,
        'username' => $user,
        'password' => $password,
        'hostname' => $host,
        'port' => $port,
        'driver_options' => array(
            'i5_naming' => DB2_I5_NAMING_ON,
            'i5_lib' => 'LIBWEB',
        ),
    ), 
);

我的 Mapper 类中的 fetchAll() 函数是:

public function fetchAll()
{
    $select = new Select('WBRESOURCE');
    $paginatorAdapter = new DbSelect($select, $this->adapter);
    $collection = new ResourcesCollection($paginatorAdapter);
    return $collection;
}

当我点击 DbSelect 时,ZF2 抛出以下 DB2 Connect 错误:

"[IBM][CLI Driver][AS] SQL0204N \"*LIBL.WBRESOURCE\" is an undefined name. SQLSTATE=42704"

我不确定为什么它使用 *LIBL(用户定义的库列表),因为我在连接选项中定义了库 (SCHEMA) 以用作 LIBWEB。

提前致谢!

罗布

最佳答案

尝试更改此部分:

'driver_options' => array(
    'i5_naming' => DB2_I5_NAMING_ON,
    'i5_lib' => 'LIBWEB',

更改为“:

'driver_options' => array(
    'i5_naming' => DB2_I5_NAMING_OFF,    <=== change
    'i5_lib' => 'LIBWEB',

通过使用 DB2_I5_NAMING_OFF,您应该获得 SQL 命名模式。使用 DB2 i5 命名模式会导致诸如依赖作业的库列表之类的事情。

参见 PHP: db2-connect有关参数的一些信息。

关于php - DB2 i 系列上的 ZF2 Zend\Paginator\Adapter\DbSelect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411737/

相关文章:

php - 如何使用提交按钮的单个 onclick 事件触发 href 和 php 代码

javascript - 如何创建一个非常简单的 webhook?

php - ZF2 - 使用导航 View 助手的多个导航菜单

Java SQLException SQL0901 和 AS400 MCH1210 错误

php - TypeError与InvalidArgumentException?

php - Cron 作业无法使用 crontab linux

php - 使用 Zend Framework 2 加速 6,000 行查询

service - ZF2 通过附加参数从服务管理器获取服务

java - SQL CODE -104(错误)可以代表什么?

ASP.NET -- IIS7 -- IBM DB2 问题