我创建了一个Zend APIgility应用程序REST服务,并且遇到了我的fetchAll Mapper函数的一个问题。Z2 Zend Paginator Adapter DbSelect on DB2 i系列
我通过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',
),
),
);
在我的映射类中的使用fetchall()函数是:
public function fetchAll()
{
$select = new Select('WBRESOURCE');
$paginatorAdapter = new DbSelect($select, $this->adapter);
$collection = new ResourcesCollection($paginatorAdapter);
return $collection;
}
当我打的DbSelect,ZF2抛出以下DB2连接错误:
"[IBM][CLI Driver][AS] SQL0204N \"*LIBL.WBRESOURCE\" is an undefined name. SQLSTATE=42704"
我不确定为什么它使用* LIBL(用户定义库列表),因为我定义d库(SCHEMA)在我的连接选项中用作LIBWEB。
在此先感谢!
罗布
从我所有的研究和排列中,我能够让DbSelect工作的唯一方法是保持i5_naming为ON并移除i5_lib。然后我确定我想访问的表格在连接用户的库列表中($ user)。所以实质上,无论i5_naming选项的状态如何(On或Off),DbSelect都会完全忽略i5_lib。 – user1551869 2014-12-11 15:48:44