我正在创建Zend APIgility应用程序REST服务,并且我的fetchAll Mapper函数出现问题。
我通过Windows应用服务器上的DB2 Connect连接到在i系列服务器(AS / 400)上运行的IBM DB2数据库。
My Connection是在我的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。
提前致谢!
罗布
答案 0 :(得分: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。