3

我正在创建 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。

提前致谢!

4

1 回答 1

1

尝试更改此部分:

'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

于 2014-12-11T01:12:08.507 回答