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